Created
September 4, 2011 12:19
-
-
Save kijuky/1192784 to your computer and use it in GitHub Desktop.
IllegalAccessError (Appトレイトを使ってないバージョン)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package test; | |
public class A { | |
protected int i; // ← コンストラクタ起動時にこいつにアクセスすると IllegalAccessError | |
public A(int i) { | |
this.i = i; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import test._ | |
object Sample { | |
def main(args: Array[String]) { | |
new B(1) { | |
new B(i) // 問題なし | |
} | |
new B(1) { | |
new B(i){} // 問題なし | |
} | |
new A(1) { | |
new A(i) // 問題なし | |
} | |
new A(1) { | |
new A(i){} // throw IllegalAccessError | |
} | |
} | |
} | |
package test { | |
class B(protected[test] var i: Int) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import test.*; | |
class SampleJ { | |
public static void main(String[] args) { | |
new A(1) { | |
/* initializer */ { | |
new A(i) { // 問題なし | |
}; | |
} | |
}; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> mkdir test | |
> copy A.java test\A.java | |
> javac SampleJ.java | |
> java SampleJ | |
> scalac Sample.scala | |
> scala Sample | |
java.lang.IllegalAccessError: tried to access field test.A.i from class Sample$$ | |
anon$5$$anon$6 | |
at Sample$$anon$5$$anon$6.<init>(Sample.scala:18) | |
at Sample$$anon$5.<init>(Sample.scala:18) | |
at Sample$.main(Sample.scala:17) | |
at Sample.main(Sample.scala) | |
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. | |
java:57) | |
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces | |
sorImpl.java:43) | |
at java.lang.reflect.Method.invoke(Method.java:601) | |
at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClass | |
Loader.scala:78) | |
at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoade | |
r.scala:24) | |
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaC | |
lassLoader.scala:88) | |
at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scal | |
a:78) | |
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLo | |
ader.scala:101) | |
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:33) | |
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:40) | |
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala | |
:56) | |
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80) | |
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89) | |
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment