java基础之反射(2.class类的使用)
2014-08-11 13:01
441 查看
本章主旨: 可以使用class类完成对象的实例化操作
可以通过construct类调用有参构造方法完成对象的实例化操作
class主要反射的源头 不光可以取得对象所在类的信息也可以通过class方法进行对象实例化操作
正常情况下使用new关键字为对象实例化,如果现在已经实例化好了Class对象则就可以通过提供的
以下代码进行演示 必须是无参构造
per=(person) c.newInstance();//已经实例化对象
在使用有参构造方法时
1.通过class为getConstruct取得本类方法的全部方法
2.向构造方法传递一个对象数组进去,里面包含着构造方法的各个参数
3.之后通过construct实例化对象
可以通过construct类调用有参构造方法完成对象的实例化操作
class主要反射的源头 不光可以取得对象所在类的信息也可以通过class方法进行对象实例化操作
正常情况下使用new关键字为对象实例化,如果现在已经实例化好了Class对象则就可以通过提供的
以下代码进行演示 必须是无参构造
package KownClass; class person { private String name;// name属性 private int age; // age属性 public String getName() { return name; } // 其中必须存在无参构造 public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "person [name=" + name + ", age=" + age + "]"; } } public class test1 { public static void main(String[] args) { Class<?> c = null;// 指定泛型 // 以下的操作形式是在开发中最常用的一种形式 try { // 传入完整的包名 名称实例化对象 c = Class.forName("KownClass.person"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } person per=null;//声明person 对象 try { per=(person) c.newInstance();//实例化对象 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } per.setName("JDK"); per.setAge(22); System.out.println(per);//内容输出 调用tostring } }可以发现即使不使用关键字new 对象也可以进行实例化操作 反射的作用 因为
per=(person) c.newInstance();//已经实例化对象
在使用有参构造方法时
1.通过class为getConstruct取得本类方法的全部方法
2.向构造方法传递一个对象数组进去,里面包含着构造方法的各个参数
3.之后通过construct实例化对象
package KownClass; import java.lang.reflect.Constructor; class person { private String name;// name属性 private int age; // age属性 public String getName() { return name; } public person(String name, int age) { super(); this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "person [name=" + name + ", age=" + age + "]"; } } public class test1 { public static void main(String[] args) { Class<?> c = null;// 指定泛型 // 以下的操作形式是在开发中最常用的一种形式 try { // 传入完整的包名 名称实例化对象 c = Class.forName("KownClass.person"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } person per = null;// 声明person 对象 //1.向构造方法传递一个对象数组进去, Constructor<?>cons[]=null; /* 之 后通过construct实例化对象*/ cons=c.getConstructors(); try { //2.里面包含着构造方法的各个参数 per = (person)cons[0].newInstance("JDK",22);// 实例化对象 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } /*per.setName("JDK"); per.setAge(22);*/ System.out.println(per);// 内容输出 调用tostring } }
相关文章推荐
- Java(反射的基础Class类)
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- java 基础之反射使用总结
- 【Java基础知识】Java反射--Class、Constructor、Filed、Method类的使用
- Java反射Class类的使用
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- Java反射的基础——Class类
- Java反射的基础使用
- Java反射基础(二)--Fileds对象的使用
- JAVA学习之反射(1):Class类和java.lang.reflect包的使用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 黑马程序员——【Java反射学习】Class类的使用
- java基础之反射(1.认识class类)
- Java反射学习总结(1)——Class类的使用
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- java基础之通过反射获得和使用类的字段、方法、构造器,等
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
- 19、Java入门—反射之Class类的使用
- Java反射(一)----- Class类的使用