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中抽象类和接口是不能被实例化)

  • 相关阅读:
    DevExpress 控件使用之GridControl基本属性设置
    GridControl基础设置(一)
    GitHub Top 100 简介
    Swift3.0 单例模式实现的几种方法-Dispatch_Once
    获取cell数组
    Xcode Apple Mach-O Linker Error Group错误
    Xcode运行设备由iphone/ipad变为my mac的解决方
    iOS 修改图片颜色
    iOS——UIActivityIndicatorView活动指示器
    iOS 消息处理之performSelector
  • 原文地址:https://www.cnblogs.com/kanbudong/p/12741650.html
Copyright © 2011-2022 走看看