java - Type safety: Potential heap pollution via varargs parameter subtrees -


this question has answer here:

i'm reading j. bloch's effective java , got unchecked casts never unless made sure cast safe. now, since java collection frameworks doesn't provide tree data structure have write on own.

public interface treevisitor<e, r> {     public r visit(e leaf);      public r visit(e val, tree<e>... subtrees); }  public abstract class tree<e> {      public abstract <r> r accept(treevisitor<e, r> visitor);      public tree<e> leaf(e leaf) {         return new tree<e>() {             @override             public <r> r accept(treevisitor<e, r> visitor) {                 return visitor.visit(leaf);             }         };     }      public tree<e> branch(e value, tree<e>... subtrees){ //1         return new tree<e>(){             @override             public <r> r accept(treevisitor<e, r> visitor) {                 return visitor.visit(value, subtrees);             }         };     }  } 

at //1, got warning:

type safety: potential heap pollution via varargs parameter subtrees

how can check code safe?

how can check code safe?

it's safe if visitors rely on fact elements of subtrees tree<e>, , not rely on fact subtrees tree<e>[]. if case, should annotate visit method @safevarargs.


Comments