0
我在這裏丟失了一些明顯的東西,但是當我使用ByteBuddy子類化一個類時,我看不到聲明的方法。使用ByteBuddy子類化一個類沒有任何聲明的方法
Object.class.getDeclaredMethods()
結果:
[protected void java.lang.Object.finalize() throws java.lang.Throwable, public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException, public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException, public final void java.lang.Object.wait() throws java.lang.InterruptedException, public boolean java.lang.Object.equals(java.lang.Object), public java.lang.String java.lang.Object.toString(), public native int java.lang.Object.hashCode(), public final native java.lang.Class java.lang.Object.getClass(), protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException, private static native void java.lang.Object.registerNatives(), public final native void java.lang.Object.notify(), public final native void java.lang.Object.notifyAll()]
現在用ByteBuddy:
new ByteBuddy().subclass(Object.class)
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.INJECTION)
.getLoaded().getDeclaredMethods()
結果:
[]
閱讀[用於getDeclaredMethods()的Javadoc()](https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getDeclaredMethods()):「排除了繼承的方法」。 –
現在有道理。謝謝@AndyTurner –