StringとTreeNodeの2つのタイプの子を格納できるTreeNodeクラスを作成する必要があります。子供の数は固定されていません。
どういうわけか次のようなTreeNodeオブジェクトを作成したいと思います。
TreeNode a = new TreeNode("str", new TreeNode("str2"), "str3"); //Correct
TreeNode b = new TreeNode(a, "str4); //Correct
TreeNode c = new TreeNode(54); //Wrong
コンパイル時にワイルドカードなどを使用して引数の型チェックを行うにはどうすればよいですか?
私の不適切なランタイムソリューション:
private static final boolean debug = "true".equals(System.getProperty("debug"));
public <T> TreeNode (T... childs) {
if (debug) {
for (Object child : childs) {
if (!(child instanceof String || child instanceof TreeNode)) {
throw new RuntimeException("Type of childs must me Tree or String");
}
}
}
}