记一次反射没flex明白的错误!敬与自己一样的没flex明白的小白(大佬勿喷!!!)

最近不知道怎么了,好多以前没遇到的知识都来拦路,项目也不顺利,惹了组长大人大怒。比如说今天就遇到了不常用的反射...

喂喂喂,你一定会说反射不大多被用在了框架上吗,而且是被封装好了的。

是呀!以前也是拿来用就好了。可是今天遇到了奇葩的事情,框架构造器竟然无法运行了(当时真想砸电脑)。擦,你一定会说重安装就好了呗!是个思路。可是好多之前的和未完成的release branches的config都要爆掉,受不鸟,受不鸟。最最主要的是今天的工作又要~~~,我擦!

没办法,强整喽!

挺有意思的是这次要reflex的对象被重写了构造;呵,我觉得自己真的不适合继续干下去了;妹的,根本没处理过反射带参的好吗!!!,于是请教组内大佬;

(受某些影响,所以只放Demo)


import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * @author: windxndj
 * @time: 2019年1月4日
 */
public class Employee {
    String name;
    int salary;
    int saladd;

    /**
     * String name;字符串:姓名 int salary;整型薪资 int saladd; 整型餐补
     */
    //Employee(){}
    Employee(String name, int salary, int saladd) {
        this.name = name;
        this.salary = salary;
        this.saladd = saladd;
    }

    void showSalary() {
        System.out.println("姓名:" + name + ",总薪资:" + (salary + saladd));
    }

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


        String className = "cn.it.qianyjc.Employee";

//妹的,报错呀!我就在这无限报错;

      //思考了一下,想起当年只知道创建无参对象,没有继续深入理解反射...啊。。。抓狂~~~
        //Employee emp = (Employee)(Class.forName(className).newInstance());

           //这里自己拆开的,看一下具体哪里报错;
            Class clazz;


       //class字节码的获取(⊙﹏⊙b汗!之前明明是在下面报错,没看出对象创建上的问题,以为是最常见的字节码对象获取错了;
            //clazz = Employee.class;

            //以为这的问题,那类名的反射试了一下。。。。现在一想,当时脑袋绝对瓦特了;)
            clazz = Class.forName(className);

            //获取类Employee构造方法的参数列表
            //new Employee(String,int,int)

 


//知道构造方法和创建对象有关,但忘了反射的对象TM也有大关;


//以前的做的反射绝对的隐藏了getDeclaredConstructor;这里感谢王哥!!!
            Constructor cons = clazz.getDeclaredConstructor(String.class, int.class, int.class);

         
 

            Object instance;
            //以前直接用该方法用的是指定类中默认的     空参数构造函数      完成的初始化;

          //吃一堑长一智,第一次知道.newInstance参数列表也可以这么玩,真TM;
            instance = cons.newInstance("zs",1,2);
            Employee emp=(Employee)instance;
            emp.showSalary();
    }
}

 

好吧!至此,问题解决;明天星期天;希望不要影响到放假的好心情;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值