[Java] 雑記

StringBuilder≠ThreadSafe
StringBuffer=ThreadSafe

out.printf("[%S]\n", "string");

public enum EnumClass {
 HOGE("hoge"), PIYO("piyo");
 fields;
 constrcutors;
 methods;
}

genericsは共変(covariant)でない

covariant
Integer integer = new Integer(8);
Numner number = integer; // legal
Integer -impl-> Number

IntegerとNumberは継承関係にある
Number=親, Integer=子
子は親を包含しているので親の方に代入可能である

Q. 親Numberを子Integerに代入できるか?
A.
Java#配列の場合は可能∵共変(covariant)だから
Java#Listの場合は付加∵反変(contra-variant)だから

共変(covariant)⇔反変(contra-variant)

Integer[] integerArray = new Integer[](0);
Number[] numberArray = integerArray; // legal

List intList = new ArrayList();
List numList = intList; // illegal
∵ compile err → 互換性のない型 = Not covariant

tag : 共変 covariant 反変 contra-variant Java

2014-06-18 23:18 : engineering : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud