class MyConcreteClass extends MyAbstractClass { publicvoid doWork() { // checkFunc() is called via invokevirtual here; MyConcreteClass // inherits via MyAbstractClass
System.out.println("In doWork() calling checkFunc(): " + checkFunc());
MyInterface1 if1 = (MyInterface1) this; // checkFunc() is called via invokeinterface here; this call will // use the first itable entry
System.out.println("In doWork() calling if1.checkFunc(): " + if1.checkFunc());
MyInterface2 if2 = (MyInterface2) this; // checkFunc() is called via invokeinterface here; this call will // use the second itable entry
System.out.println("In doWork() calling if2.checkFunc(): " + if2.checkFunc());
}
}
// modified version of redefineClass function
String transformedClassFile = ClassTransformer.fromTestSource(SOURCE_FILE)
.transform(1, ABSTRACT_CLASS, "-g");
jdb.command(JdbCommand.redefine(ABSTRACT_CLASS, transformedClassFile)); // end modified version of redefineClass function
// this will continue to the second breakpoint
jdb.command(JdbCommand.cont());
new OutputAnalyzer(getDebuggeeOutput())
.shouldContain("This is call 4 to checkFunc")
.shouldContain("This is call 5 to checkFunc")
.shouldContain("This is call 6 to checkFunc");
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.