private Integer[] array = new Integer[]{1, 2, 3, 4};
Number getValueByIndex(int index)
{
return (index >= 0 && index < array.length) ? array[index] : new Double(-1);
}
public static void main(String[] args)
{
Number value1 = new Solution().getValueByIndex(5); //-1.0, class java.lang.Double expected
Number value2 = new Solution().getValueByIndex(2); //3, class java.lang.Integer expected
System.out.println(value1 + ", " + value1.getClass().toString());
System.out.println(value2 + ", " + value2.getClass().toString());
}
2番目のケースでメソッドが整数ではなくダブルを返す理由がわかりません。
これは、条件式で2番目と3番目のオペランドとして2つの異なる型(数値型に変換可能)が使用されているためです。
条件式のタイプがどのように決定されるかは、ここで説明されています:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加