Java 反射机制学习(一)
来源:互联网 发布:联系淘宝客服 编辑:程序博客网 时间:2024/05/16 11:00
定义:在运行过程状态中,对于任意一个类,都能够知道这个类所有属性和方法;任意的一个类,可以调用它的方法;
应用: Spring 框架 IOC(控制反转);Hibernate 关联映射;白盒测试
反射API:java.lang: Class<T>:表示一个正在运行的java应用程序的类和接口 ,是Reflection的起源
package TestPacageX;public class ReflectTest {public static void main(String[] args){ Class<?> c1=null; Class<?> c2=null; Class<?> c3=null; Class<?> c4=null;//方式一:使用对象的getClass()Person p=new Person("test",100);c1=p.getClass();System.out.println(c1.getName()); //方式二: static method Class.forName() 最常使用try{c2=Class.forName("TestPacageX.Person");}catch(Exception e){e.printStackTrace();} // 方式三:使用。class语法c3=Person.class;//方式四:如果是机JAVA封装类,使用Type语法c4 = Integer.TYPE;System.out.println(c2.getName());System.out.println(c3.getName());System.out.println(c4.getName());}}class Person{private String name;private int age;public Person(){} public Person(String name, int age){ this.name=name; this.age=age; System.out.println(name); System.out.println(age);} public Person(String name){ this.name=name; System.out.println(name);} public Person(int age){ this.age=age; System.out.println(age);} }
<pre name="code" class="html">test100TestPacageX.PersonTestPacageX.PersonTestPacageX.Personint
package TestPacageX;import java.lang.reflect.Constructor;public class ReflectTest {public static void main(String[] args){// 获得所有的公有的构造方法try{Class<?> c =Class.forName("TestPacageX.Person");System.out.println("指定参数类型所有的公有的构造方法");Constructor[] constructors1=c.getConstructors();for(int i=0;i<constructors1.length;i++)System.out.println(constructors1[i].toGenericString());//获得特定参数类型的公有构造方法System.out.println("指定参数类型的公有的构造方法");try{Constructor constructors2=c.getConstructor(new Class[]{String.class,int.class});System.out.println(constructors2.toGenericString());}catch(Exception e){e.printStackTrace();}//获得特定参数类型的构造方法System.out.println("指定参数类型的构造方法");try{Constructor constructors3=c.getDeclaredConstructor(new Class[]{String.class,int.class});System.out.println(constructors3.toGenericString());}catch(Exception e){e.printStackTrace();}// 获得所有的构造方法System.out.println("获得所有的构造方法");Constructor[] constructors4=c.getDeclaredConstructors();for(int i=0;i<constructors4.length;i++)System.out.println(constructors4[i].toGenericString());}catch(ClassNotFoundException e){e.printStackTrace();} }}class Person{private String name;private int age;public Person(){} public Person(String name, int age){ this.name=name; this.age=age; System.out.println(name); System.out.println(age);} private Person(String name){ this.name=name; System.out.println(name);} public Person(int age){ this.age=age; System.out.println(age);} }
指定参数类型所有的公有的构造方法public TestPacageX.Person(int)public TestPacageX.Person(java.lang.String,int)public TestPacageX.Person()指定参数类型的公有的构造方法public TestPacageX.Person(java.lang.String,int)指定参数类型的构造方法public TestPacageX.Person(java.lang.String,int)获得所有的构造方法public TestPacageX.Person(int)private TestPacageX.Person(java.lang.String)public TestPacageX.Person(java.lang.String,int)public TestPacageX.Person()
0 0
- java 反射机制学习(一)
- Java 反射机制学习(一)
- Java反射机制学习笔记(一)
- JAVA反射机制学习(一)
- Java反射机制(一)
- java反射机制(一)
- Java 反射机制(一)
- java反射机制(一)
- JAVA反射机制(一)
- Java反射机制(一)
- (一)JAVA反射机制学习及研究
- JAVA的反射机制学习笔记(一)
- java反射机制学习(一)--Class类
- JAVA反射机制深入学习(一)Java反射概念解析
- Java反射机制(一)
- Java反射机制一
- java反射机制 一
- JAVA反射机制(一)
- Java多线程(二)、线程的生命周期和状态控制
- /root/.bashrc与/etc/profile的异同
- Xcode开发调试技巧—断点调试
- 虚拟IP原理
- MySQL的查询优化
- Java 反射机制学习(一)
- 事件选择 - WSAEventSelect
- 如何跟程序员谈一场没有Bug的恋爱
- C语言
- Open-Closed Principle,OCP
- iOS 手势识别 - gestureRecognizer
- ios开发遇到的44高度,和64 高度问题
- 帮你提升 Python 的 27 种编程语言
- MATLAB实现坐标系变换动画演示