Я читаю JMH
образцов, и теперь я нахожусь в разделе о inheritance. Вот замечание они сделали:Понимание java компиляции и наследования
потому мы знаем только иерархию типов во время компиляции, это возможно только в течение той же сессии компиляции. То есть, смешивая в подкласс, расширяющий ваш базовый класс после, компиляция JMH не повлияет.
Я не думал об этом аспекте компиляции, и поэтому это не кажется мне совершенно ясным. Мы могли бы использовать Class::getSuperClass
. Пример:
@Benchmark
public abstract class MyBenchmark{
public void mb(){
doSome();
}
public abstract doSome();
}
Я думал, что при компиляции этого класса JHM использует процессор аннотации для генерации эталона. И тогда, если мы попытаемся скомпилировать подкласс сказать
public class MyConcreteBenchmark extends MyBenchmark {
@Override
public void doSome(){
//Do some
}
}
это не имеет никакого эффекта, потому что процессор аннотаций не имеет никакого отношения к процессу.
Это комментарий, не вопрос. –
@MarkoTopolnik Что значит? Я просто был смущен ** мы знаем только иерархию типов во время компиляции **. Что это должно было означать? –
Обработчик аннотации запускается во время компиляции, правильно? –