次のコード セグメントでは、コンパイラ エラーが発生します。
public List<Long> test()
{
boolean b=true;
return b ? Collections.emptyList() : Collections.emptyList();
}
互換性のないタイプが必要です:
List<Long>
見つかりました:List<Object>
次のようなジェネリック型が必要です。
public List<Long> test()
{
boolean b=true;
return b ? Collections.<Long>emptyList() : Collections.<Long>emptyList();
}
この三項演算子を次のように削除すると、
public List<Long> test()
{
return Collections.emptyList();
}
if-else
または、次のような構造で表される場合、
public List<Long> test()
{
boolean b=true;
if(b)
{
return Collections.emptyList();
}
else
{
return Collections.emptyList();
}
}
その後、正常にコンパイルされます。
最初のケースがコンパイルされないのはなぜですか? jdk-7u11 でテスト済み。