编译器如何处理注释?
2022-09-04 20:01:50
我有一些关于在java中处理注释的问题。
如果注释无法转换为字节码,那么这些信息去哪儿了?元数据去哪儿了?Java Reflection 如何使用这些信息?
编译器如何处理注释?
当我们说,
@Override
public void doSomething(){
}
Java编译器用它做什么?
我知道它会检查方法签名,以便该方法应该是一个完全覆盖的方法,但是如何呢?
我有一些关于在java中处理注释的问题。
如果注释无法转换为字节码,那么这些信息去哪儿了?元数据去哪儿了?Java Reflection 如何使用这些信息?
编译器如何处理注释?
当我们说,
@Override
public void doSomething(){
}
Java编译器用它做什么?
我知道它会检查方法签名,以便该方法应该是一个完全覆盖的方法,但是如何呢?
有三种类型的批注,请参见 http://download.oracle.com/javase/6/docs/api/java/lang/annotation/RetentionPolicy.html
@Override是一种特殊情况,因为编译器会执行其他检查。
@Override
是一个源类型注释 - 用于检查特定方法是否遵循被覆盖方法的协定 - 因此它在运行时不可用(因此在逻辑上不存在于编译的字节码中)。
我知道它会检查方法签名,以便该方法应该是一个完全覆盖的方法,但是如何
在读取源文件并将其转换为字节码的过程中,例如,根本不使用反射。有关其他编译器信息,请参阅 Java 编程语言编译器 - javac。