Java コンパイル エラーを回避できるように Groovy を使用すると、次のようになります。
Exception in thread "main" java.lang.CloneNotSupportedException: java.lang.Object
at java.lang.Object.clone(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756)
at org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:766)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:754)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:170)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethod0(ScriptBytecodeAdapter.java:198)
at regexTests.main(regexTests.groovy:19)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]
クローン API を読むと (リンクします)、インターフェイスが実装されていない場合、 *.clone() を呼び出すと .clone() がスローされると書かれていCloneNotSupportedException
ます。
http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#clone%28%29のクローン API へのリンクjava.lang.Object
[編集] Original Question™ では、このメソッドがこのように表示される理由を尋ねました。これは、java.lang パッケージ内のメソッドにのみアクセスできるためです。プログラマーがObject
. CloneNotSupportedException
OWN オブジェクトのクローンを作成したくない場合は 、 a を投げることがまさにあなたがやりたいことです。