gpt4 book ai didi

java - 理解java编译和继承

转载 作者:行者123 更新时间:2023-11-30 02:44:52 24 4
gpt4 key购买 nike

我正在阅读 JMH 示例,现在我在关于 inheritance 的部分。以下是他们的评论:

because we only know the type hierarchy during the compilation, it is only possible during the same compilation session. That is, mixing in the subclass extending your benchmark class after the JMH compilation would have no effect.

我没有考虑过编译的这个方面,所以这对我来说似乎不太清楚。我们可以使用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
}
}

它没有任何效果,因为注释处理器没有任何可处理的内容。

最佳答案

JHM 在编译之前出现(分析和生成)。像预处理器或预编译器之类的东西。因此jmh看不到继承树,也不可能看到继承的注释。

Lombock例如以同样的方式工作。这是一张演示其工作原理的图像(只需将 Lombok 替换为 JMH):

enter image description here

阅读更多:Project Lombok: Creating Custom Transformations

关于java - 理解java编译和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40484495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com