能否调用注解接口默认方法?如何获取其默认值数组?
能否从注解接口外部获取默认方法的返回值?
可以,不需要实例化注解,直接用Java反射API就能拿到注解接口中方法的默认返回值,以你给出的ValidFileType注解为例,具体实现步骤如下:
- 先通过注解类的
class对象获取目标方法的Method实例 - 调用
Method对象的getDefaultValue()方法,即可获取该方法定义的默认值
代码示例
import java.lang.reflect.Method; import org.springframework.http.MediaType; public class Demo { public static void main(String[] args) throws NoSuchMethodException { // 获取注解的value方法 Method valueMethod = ValidFileType.class.getMethod("value"); // 获取默认的文件类型数组 String[] defaultTypes = (String[]) valueMethod.getDefaultValue(); // 遍历打印结果 for (String type : defaultTypes) { System.out.println(type); } } }
补充说明
不管注解的RetentionPolicy设置的是SOURCE、CLASS还是RUNTIME,都能通过这种方式获取默认值——因为默认值是直接存储在注解接口的字节码中的,和注解是否被保留到运行时没有关系。
内容的提问来源于stack exchange,提问作者Dónal
相关产品推荐
相关产品推荐

