zoukankan      html  css  js  c++  java
  • 学习记录(4):java 反射报错:Exception in thread "main" java.lang.InstantiationException: com.paisheng.Persion

    1-创建Person类

    2-创建Properties文件

    className=com.paisheng.Persion
    methodName=eat

    3-创建ProDemo,利用反射来实现调用

    4-运行结果,竟然报错了,

    className
    Exception in thread "main" java.lang.InstantiationException: com.paisheng.Persion
    at java.lang.Class.newInstance(Class.java:427)
    at com.thread.ProDemo.main(ProDemo.java:25)
    Caused by: java.lang.NoSuchMethodException: com.paisheng.Persion.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.newInstance(Class.java:412)
    ... 1 more

    报错地方是c.newInstance()这个地方有问题。查看了下Class类下newInstance对应的3082行报错

    parameterTypes传入进来的就是个empty,
    arrayContentsEq

     a1是空,那么a2要是空或者长度=0,才能返回true,constructor.getParameterTypes()

    java api中对这个方法的解释

    =================================

    public 类<?>[] getParameterTypes()
    返回一个类对象的数组, 类以声明顺序表示由该对象表示的可执行文件的形式参数类型。 如果底层可执行文件没有参数,则返回长度为0的数组

    =================================

    结果显然是我们只要可执行文件没有参数,才返回长度为0的数据,才不会报错,无参构造方法才满足这个条件。查询原先的Person类。果然是缺少。补充上(或者把有参的构造函数去掉),执行。完美。。。

    ---------------------------------

    后面补充:

    java.lang.InstantiationException 是指不能实例化某个对象,除了我碰到的情况外,还有一种情况也会报错(java中抽象类和接口是不能被实例化)

  • 相关阅读:
    Ajax
    PS将图标变灰
    圆角
    前端性能优化最佳实践(转)
    jquery $(document).ready() 与window.onload的区别
    js阻止冒泡及jquery阻止事件冒泡示例介绍
    CSS选择器、CSS hack及CSS执行效率
    Github快速入门手册
    Windows 系统下Git安装图解
    史上最全github使用方法:github入门到精通
  • 原文地址:https://www.cnblogs.com/kanbudong/p/12741650.html
Copyright © 2011-2022 走看看