java反射与内部类

时间记录:2019-11-19

问题描述: 今天在使用 quartz 开始定时任务的时候,我当时考虑到实现 job 不会给外部使用的情况下,使用了内部的私有类,然后发现其不能够进行实例化操作,然后看了下源码,发现其实通过反射的方式将类进行实例化的,然后我当时写的任务类的问题,导致了其通过反射的方式不能够实例化。
下面探索下反射的方式进行的实例化操作,为什么不行

第一部分: 私有类且没用进行无参构造函数显示创建

package com.huo;

/**
 * 反射的方式初始化测试
 * @author huoruilin
 */
public class TestReflection
{
   
    public static void main(String[] args)
    {
   
        try
        {
   
            Item item = (Item)Item.class.newInstance();
        }catch (IllegalAccessException | InstantiationException exception)
        {
   
            exception.printStackTrace();
        }
    }
    private class Item
    {
   

    }
}

然后很明显的是就会报找不到其无参的构造函数,如下报错内容

java.lang.InstantiationException: com.huo.TestReflection$Item
	at java.lang.Class.newInstance(Class.java:418)
	at com.huo.TestReflection.main(TestReflection.java:13)
Caused by: java.lang.NoSuchMethodException: com.huo.TestReflection$Item.<init>()
	at java.lang.Class.getConstructor0(Class.java:3069)
	at java.lang.Class.newInstance(Class.java:403)
	... 1 more

然后我们把其的无参构造函数显示的表示

 private class Item
    {
   
        public Item()
        {
   
            
        }
    }

然后依然是会报错,如下的报错

java.lang.InstantiationException: com.huo.TestReflection$Item
	at java.lang.Class.newInstance(Class.java:418
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值