Understanding java compilation and inheritance -
i'm reading jmh
samples , i'm @ section inheritance. here remark made:
because we know type hierarchy during compilation, possible during same compilation session. is, mixing in subclass extending benchmark class after jmh compilation have no effect.
i haven't thought of aspect of compilation , doesn't seem quite clear me. use class::getsuperclass
though. example:
@benchmark public abstract class mybenchmark{ public void mb(){ dosome(); } public abstract dosome(); }
i thought when compiling class jhm uses annotation processor benchmark generation. , if try compile subclass say
public class myconcretebenchmark extends mybenchmark { @override public void dosome(){ //do } }
it has no effect because annotation processor has nothing process.
jhm comes before compiling (analyze , generate). preprocessor or precompiler. therefore jmh can not see inheritance tree , not possible see inherited annotations.
lombock example works in same way. here image demonstrating how works (just replace in mind lombok jmh):
Comments
Post a Comment