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
Post a Comment