一、Constructor<T>
- Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。
- Constructor 允许在将实参与带有底层构造方法的形参的 newInstance() 匹配时进行扩展转换,
- 但是如果发生收缩转换,则抛出 IllegalArgumentException。
二、方法
public final class Constructor<T>extends AccessibleObject implements GenericDeclaration, Member { //没有构造方法 //以字符串形式返回此构造方法的名称。它总是与构造方法的声明类的简单名称相同 public String getName(){} //使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。 public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{} //返回描述此 Constructor 的字符串,其中包括类型参数 public String toGenericString(){} //返回描述此 Constructor 的字符串 public String toString(){} }
三、应用
得到某个类所有的构造方法
- 例子:Constructor[] constructors = Class.forName(“java.lang.String”).getConstructors();
得到某一个构造方法
- 例子:Constructor<String> constructor = (Constructor<String>)Class.forName(“java.lang.String”).getConstructor(StringBuffer.class);
创建实例对象
- 通常方式:String str = new String(new StringBuffer(“abc”));
- 反射方式:String str = constructor.newInstance(new StringBuffer(“abc”));
Class.newInstance()方法:
- 例子:String obj = (String)Class.forName(“java.lang.String”).newInstance();
- 该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象
- 该方法内部的具体代码是怎样写的呢?用到了缓存机制来保存默认构造方法的实例对象。。。。
四、示例
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class ReflectDemo { public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException { Constructor<String> con = (Constructor<String>) Class.forName("java.lang.String").getConstructor(StringBuffer.class); String str = con.newInstance(new StringBuffer("abc")); System.out.println(str); String obj = (String) Class.forName("java.lang.String").newInstance(); System.out.println("<"+obj+">"); } }
相关推荐
mysql://localhost/sample"/> <br><property name="JDBC.Username" ="user"/> <br><property name="JDBC.Password" ="mypass"/> <br><property name=<br>value="10"/> <br><property name=value="5"/> <br><property...
【项目源码】-java进销存管理系统 ... import java.awt.BorderLayout; import java.awt.Color;...import java.lang.reflect.Constructor; import java.net.URL; import java.util.HashMap; import java.util.Map;
java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier;
i < constructor.length; i++) { System.out.println("构造方法:"+constructor[i]); } //方法二 for (int i = 0; i < constructor.length; i++) { Class<?> p[]=constructor[i].getParameterTypes(); ...
//类 java.lang.reflect.Constructor;//构造方法 java.lang.reflect.Field; //类的成员变量 java.lang.reflect.Method;//类的方法 java.lang.reflect.Modifier;//访问权限 Java高级程序设计实战教程第三章-Java反射...
4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。 5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String); 例子: a..使用...
richfaces_erro 正在建立中 调试当中 严重: Cant instantiate class: org.ajax4jsf.application.AjaxStateManager. java.lang.reflect.... at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
KeySpec dks = (KeySpec) constructor.newInstance(new Object[]{rawKeyData}); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance...
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法。 (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 ...
反射调用 Class 或 java.lang.reflect.Constructor 的 newInstance()方法 克隆调用现有对象的 clone()方法 反序列化调用 java.io.ObjectInputStream 的 getObject()方法反序列化 各自适合的场景,面对参数的变化,本...
Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。...
Java反射技术的核心在于java.lang.reflect包,它提供了一系列类和接口,用于在运行时获取关于类和对象的信息,并进行相应的操作。主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它...本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class SimpleTest { /** *//** * @param args */ public static void main(String[] args) { // TODO Auto-...
In java, Strings are objects that belong to class java.lang.String. A string is a sequence of simple characters. We can get the length of the string by using the method length() of java.lang.String. ...