最近、以下のコードでコンパイルエラーが発生しました。
import org.eclipse.swt.widgets.TreeItem;
Object parent; // can only be a Tree or a TreeItem
...
TreeItem item = new TreeItem((parent instanceof TreeItem) ? (TreeItem) parent : (Tree) parent, SWT.NONE);
コンパイラーによると:「コンストラクターTreeItem(Widget、int)は未定義です」
次に、別のコードで試してみました。
Object x = new Integer(1);
Test t = new Test((x instanceof String) ? (String) x : (Integer) x);
class Test{
public Test(String s){}
public Test(Integer i){}
}
そして、別のエラーが発生しました:「コンストラクターTest(Object&Serializable&Comparable)が未定義です」
そのため、従来のif-else構造を使用せざるを得ませんでした。コンパイラがそのように動作する理由はありますか?