java开发之构造方法的反射应用
2016-11-10 08:23
411 查看
Constructor类代表某一个类中的一个构造方法
得到某个类的所有构造方法:
创建实例对象:
通常方法:
私有的构造方法:
我们知道一个对象如果将构造方法私有化,那么就只能从内部来实例化该对象,其实不然,通过反射,我们仍然可以从外部来实例化该对象
得到某个类私有的构造方法:
要使用constructor.setAccessible(true);之后才能实例化该对象
创建实例对象:
内部类的反射:
一个内部类的实例化是依靠外部类的,即先有外部类才有内部类,其实内部类的构造方法的第一个参数就是外部类
内部类的实例化:
try {
Constructor<Test> constructor = Test.class.getDeclaredConstructor();
constructor.setAccessible(true);
Test test = constructor.newInstance();
Constructor<Test1> constructor1 = Test1.class.getDeclaredConstructor(Test.class);
Test1 test1 = constructor1.newInstance(test);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
Android开发交流群:245461612
得到某个类的所有构造方法:
Constructor<?>[] constructors = String.class.getConstructors();得到某一个构造方法:
Constructor<String> constructor = String.class.getConstructor(StringBuffer.class);</span>
创建实例对象:
通常方法:
String str = new String(new StringBuffer("abc"));反射方法:
String str = constructor.newInstance(new StringBuffer("abc"));
私有的构造方法:
我们知道一个对象如果将构造方法私有化,那么就只能从内部来实例化该对象,其实不然,通过反射,我们仍然可以从外部来实例化该对象
得到某个类私有的构造方法:
Constructor<Test> constructor = Test.class.getDeclaredConstructor();这样就可以获取到这个类的无参数的私有构造方法,但是我们虽然获取到了它的构造方法,但是我们不能直接使用它来实例化对象
要使用constructor.setAccessible(true);之后才能实例化该对象
创建实例对象:
public class Test{ private Test(){} }
try { Constructor<Test> constructor = Test.class.getDeclaredConstructor(); constructor.setAccessible(true); Test test = constructor.newInstance(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }
内部类的反射:
一个内部类的实例化是依靠外部类的,即先有外部类才有内部类,其实内部类的构造方法的第一个参数就是外部类
内部类的实例化:
public class Test{ private Test(){} class Test1{ } }
try {
Constructor<Test> constructor = Test.class.getDeclaredConstructor();
constructor.setAccessible(true);
Test test = constructor.newInstance();
Constructor<Test1> constructor1 = Test1.class.getDeclaredConstructor(Test.class);
Test1 test1 = constructor1.newInstance(test);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
Android开发交流群:245461612
相关文章推荐
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java反射-------构造方法的反射应用
- java反射的应用 构造方法 成员变量
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 黑马程序员_Java高薪技术之构造方法的反射应用
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- (Java基础--反射)构造方法的反射应用
- java反射的应用 构造方法 成员变量
- Java反射-------构造方法的反射应用
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- 【CORE JAVA】反射应用:通用方法-扩展数组长度
- 用Java快速开发Linux GUI应用的基本方法
- 测试 java反射Reflection中 获取 类属性、方法、构造方法及 调用类方法改变 对象属性
- 8.2 构造方法的反射应用
- 【JAVA】【反射】JAVA 中 getMethod()和invoke()方法应用
- Java使用新浪微博API开发微博应用的基本方法
- Java反射在Main方法的中的而应用