2005-05-17から1日間の記事一覧

ある名前が型名とフィールド名の両方で解釈できる場合、フィールド名としての解釈が優先される

JLS2 6.3.2, 6.5 より。 package foo; class ObscuredName { Inner foo = new Inner(); static int i = 0 ; int test() { // ObsucuredName#i ではなく、Inner2#i へのアクセスと解釈される。 // foo.ObscuredName を解釈する際に型の名前よりも // フィール…

private なメンバはその宣言を囲むトップレベルクラスの中で参照できる

JLS2 6.6.1 より。 class PrivateField { private int private_i; private void private_meth() { } int test() { Internal obj = new Internal(); return obj.private_j; } class Inner { private int private_j; int read() { return private_i; } void wr…

たとえ子クラスからでもprotectedフィールドに無制限にアクセスできるわけではない

JLS2 6.6.2, 6.6.7 より。 package foo; public class ProtectedField { protected int i; }package bar; import foo.ProtectedField; public class ProtectedFieldChild extends ProtectedField { int test(ProtectedFieldChild p) { // OK return p.i; } i…