java 反射 设null_使用java注释和反射获取java.lang.NullPointerException

博客内容涉及Java注解(@PrintDevice)的使用,以及通过反射调用带有默认值的方法。在Test.java中,尝试从Printer类获取PrintDevice注解并执行相应方法时遇到了NullPointerException。问题可能出在注解的获取或方法调用上。
摘要由CSDN通过智能技术生成

我写了3个类“PrintDevice,Printer,Test”如下

首先,PrintDevice.java

public @interface PrintDevice{

String defaultPrint();

int defaultNumber();

}

第二,Printer.java

@PrintDevice(defaultPrint="print",defaultNumber=5)

public class Printer{

public Printer(){

//empty Construcutor

}

@PrintDevice(defaultPrint="print",defaultNumber=5)

public void print(int number){

System.out.println(number);

}

}

三,Test.java

import java.lang.reflect.*;

public class Test{

public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException{

Printer printer = new Printer();

PrintDevice anno = printer.getClass().getAnnotation(PrintDevice.class);

Method m = printer.getClass().getMethod(anno.defaultPrint(),int.class);

m.invoke(printer,anno.defaultNumber());

}

}

并且没有任何问题地编译它们,但是当我尝试运行Test.java时,我得到NullPointerExcetion如下: -

Test.main中的线程“main”java.lang.NullPointerException中的异常(Test.java:7)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值