私はこのようなファイル構造やコードを持っている:静的メソッド&継承 - java.lang.IllegalAccessErrorコンパイル時に見つからない
../inside/A.java
package inside;
public class A{protected static void someStaticMethod(){}}
../内部/ B.java
package inside;
import inside.A;
public class B extends A{protected static void someStaticMethod(){}}
../inside/C.java
package inside;
import inside.B;
public class C extends B{protected static void someStaticMethod(){}}
../Z.java
import inside.*;
class Z extends B{
public static void main(String args[]){
A.someStaticMethod();
B.someStaticMethod();
C.someStaticMethod(); // Fine at compile-time but IllegalAccessError at run-time.
}
}コメントとラインで
コンパイル時にエラーがないが、実行時にIllegalAccesErrorがあります。
この動作の真の理由は何ですか?
私は質問を見つけました - Why does Java bind variables at compile time? - 最初の答えに多分理由が述べられているかもしれませんが、私は間違いなく確信しています。
最後の行だけがエラーをスローしますか? –
はい、最後の行だけがエラーをスローします。 –
これはどのJavaバージョンですか? – fge