关于Java语言中如何运用反射机制执行某个确定类的构造方法(一)
来源:互联网 发布:企业办公网络优化方案 编辑:程序博客网 时间:2024/06/17 03:29
首先,这篇文章针对于对java语言有一定的基础,并且,对其中的反射机制有一定了解的小伙伴们!
这里,我主要想给大家介绍如何用反射机制执行某个类的构造方法。
首先,写一个普通的类:
package com.mec.about_reflection;public class Person { private String name; private int age; public Person() { System.out.println("无参构造器!"); } public Person(String name) { System.out.println("name:" + name); } @SuppressWarnings("unused") private void privateMethod(){ System.out.println("这是一个私有的方法!"); } public Person(String name, int age) { System.out.println("有参构造器!"); this.setName(name); this.setAge(age); } public void setName(String name , int age){ System.out.println("name: " + name); System.out.println("age:"+ age); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "name:" + name + ", age:" + age; }}
大家可以看出这就是一个普通的Java类。
接下来,我们在main函数中获取并执行它的构造方法。
import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import com.mec.about_reflection.Person;public class TestMethod { public static void main(String[] args) { //利用反射机制得到这个(Person)这个类 Class class1 = null; class1 = Person.class; try { //1.获取它的无参构造方法,这个比较简单newInstance()方法就是给这个类创建了一个新的对象,自然执行了它的构造方法, Object object = class1.newInstance();//此句会调用它的但参构造方法,且伴随着“;”完而执行完毕无参构造方法 //底下这句话会显示这个类的toString()方法(已经过验证) System.out.println("调用它的无参构造方法!:" + object); //调用它的有参构造方法 System.out.println("调用它的有参构造方法!"); //获取这个类 Class class2 = Class.forName("com.mec.about_reflection.Person"); System.out.println("执行单参构造方法!"); //2.获取并执行它的单参构造方法 Class[] clazzType = new Class[]{Class.forName("java.lang.String")}; Constructor constructor1 = class2.getConstructor(clazzType); System.out.println("单参constructor1:" + constructor1); Object object2 = constructor1.newInstance("远远");//此时已经执行了它的但参构造方法 //这一行会输出是默认调用了这个类的toString()方法 System.out.println("object2:" + object2); //3.获取并执行这个类的双参构造方法 //将Person这个类的有参构造方法的参数类型用Class数组的方式存放,{Class.forName("java.lang.String"),int.class}这句话是为了得到类型,在这里具体指Person中有参构造方法中的参数类型, Class[] classParaType = new Class[]{Class.forName("java.lang.String"),int.class}; //获取这个类的构造方法并将存放这个构造方法参数的数组传进去,用Constructor类创的实例接收它 Constructor constructor = class2.getConstructor(classParaType); System.out.println("双参constructor:" + constructor); //创建一个对象,并将自己要传递的实参传进去 Object result = constructor.newInstance("芳芳",108);//这里伴随着“;”它的双参构造方法已经执行完毕 //这一行会输出是默认调用了这个类的toString()方法 System.out.println("result:" + result); } catch (Exception e) { e.printStackTrace(); } }}
执行结果如下:
无参构造器!调用它的无参构造方法!:name:null, age:0调用它的有参构造方法!执行单参构造方法!单参constructor1:public com.mec.about_reflection.Person(java.lang.String)name:远远object2:name:null, age:0双参constructor:public com.mec.about_reflection.Person(java.lang.String,int)有参构造器!result:name:芳芳, age:108
大家可能对于带参构造方法的参数存放问题有疑问,我刚刚试了单参构造方法的获取,它也只能用数组的形式表示,这一点对于菜鸟级别的我也有难度,再接再厉以后学明白了我会解释的!
如果你看完了,并且疑问或者建议请留言!
大家:晚安!
阅读全文
0 0
- 关于Java语言中如何运用反射机制执行某个确定类的构造方法(一)
- 如何使用Java的反射机制以及调用构造方法?
- java如何确定某个语句执行多久?
- 用java的反射机制执行某个方法并传递复杂参数
- java 反射机制调用私有构造方法并执行类内方法
- Java 反射机制运用实例(动态调用类的方法)
- java的反射机制--关于类中属性的反射。
- java反射机制的运用
- java反射机制的运用
- Java反射机制概念及构造方法的反射
- 构造方法类的反射机制
- [JAVA]运用反射机制,抛出的异常的捕获方法
- java中利用反射机制得到一个类的所有构造方法,成员方法机器参数的列表
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- java反射(获取某个类或者某个对象所对应的Class对象的常用3中方法)
- 通过反射机制获得某个类中的属性,构造方法,方法
- 关于反射机制(反射机制的理解一)
- LeetCode 407. Trapping Rain Water II
- 简单了解"自顶向下,逐步求精"的方法
- 什么是线程?
- 刷题笔记:牛客字符串专项练习4
- Java if条件语句
- 关于Java语言中如何运用反射机制执行某个确定类的构造方法(一)
- 在cocos creator中使用protobufjs(四)
- 线程和进程有什么区别?
- 机器学习之Bagging 与 随机森林算法
- Hello JavaScript
- NOIP2017后记
- JAVASE之简单集合和IO
- 【Android源码系列】消息机制:Handler源码解析
- 模板匹配