ここには明らかな何かが欠けていますが、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()
結果:
[]