一、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+">"); } }
相关推荐
`Constructor<T>`代表类`T`的一个构造函数。 - `newInstance(Object... initargs)`:使用构造函数的新实例,传递初始化参数。 3. **Method类**: - 表示类的方法。 - `invoke(Object obj, Object... args)`:...
2. **`java.lang.reflect.Constructor`**:表示类的构造器。 3. **`java.lang.reflect.Field`**:表示类的成员变量。 4. **`java.lang.reflect.Method`**:表示类的方法。 5. **`java.lang.reflect.Modifier`**:...
Java反射(Reflect)是Java语言中的一个重要特性,它允许运行时的Java程序访问、操作类、接口、字段和方法的信息,甚至动态调用方法。在Java编程中,反射提供了强大的能力,可以用来实现一些高级功能,如元编程、...
Class 类代表了 Java 中的一个类,而 java.lang.reflect 包提供了许多反射类,例如 Constructor、Method、Field 等。 Constructor 类代表了某个类中的一个构造方法。例如,我们可以使用 Class.forName("java.lang....
其中最经常使用的是三个类:java.lang.reflect.Field类、java.lang.reflect.Method类和java.lang.reflect.Constructor类。 Java.lang.reflect.Field类提供了有关类或接口的单个域的信息。利用这个类,我们可以得到...
【项目源码】-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.Class`、`java.lang.reflect.Field`、`java.lang.reflect.Method`和`java.lang.reflect.Constructor`。下面将详细阐述这些核心类以及反射的主要用法。 1. `java.lang.Class`:每个类在...
java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier;
3. **Java动态代理**:基于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`,实现对目标对象的代理,用于拦截方法调用。 综上所述,`NoSuchMethodException`是Java编程中需要关注的一个重要异常...
在Java中,可以使用`java.lang.reflect.Proxy`类和`InvocationHandler`接口来实现动态代理。 综上所述,Java反射机制为开发者提供了强大的工具,使得程序能在运行时灵活地操作类和对象。但需要注意的是,反射操作...
构造方法:public Reflect.Person(java.lang.String) ``` #### 获取修饰符 除了获取构造函数本身,我们还可以获取其访问修饰符。 **示例代码片段**: ```java public class HelloWorld { public static void main...
- `java.lang.reflect.Constructor`:表示类的构造器。 #### 五、`java.lang.Class`详解 `Class`类在Java反射机制中扮演着核心角色,它是所有Java类的运行时表示。`Class`对象可以由以下几种方式获取: 1. **通过...
- `java.lang.reflect.Constructor<T>`:代表类的构造函数,用于在运行时创建新对象。 3. **获取Class对象的方法**: - `Class.forName(String className)`:根据给定的全限定类名获取`Class`对象。 - `Object ...
- `java.lang.reflect.Method`:代表类的方法。 - `java.lang.reflect.Field`:代表类的成员变量。 - `java.lang.reflect.Constructor`:代表类的构造器。 #### 三、案例分析 ##### 案例1:通过一个对象获得完整的...
- `java.lang.reflect.Constructor`:表示类的构造函数,用于创建类的新实例。 3. 获取Class对象的途径: - 通过类名获取:`类名.class` - 通过对象获取:`对象名.getClass()` - 通过类的全名获取:`Class.forName...
在Java中,反射主要涉及到`java.lang.Class`、`java.lang.reflect.Method`、`java.lang.reflect.Field`和`java.lang.reflect.Constructor`等类。下面将详细介绍这些知识点。 1. **反射的概述** 反射机制使得Java...
在上述代码中,我们首先通过Class.forName("java.lang.Long")获取到Long类的Class对象,然后通过getConstructor获取其构造函数,进而创建了一个Long对象。这个过程演示了Java反射的基本使用方式。需要注意的是,由于...
反射机制的核心在于Java Reflection API,其中包括`java.lang.Class`,`java.lang.reflect.Method`,`java.lang.reflect.Field`和`java.lang.reflect.Constructor`等类。 首先,`java.lang.Class`是所有Java类的元...
在Java中,反射机制是通过java.lang.Class类和java.lang.reflect包来实现的。本笔记将深入探讨Java反射的原理、用途以及如何使用。 一、反射的概念与作用 反射是Java提供的一种能力,它允许程序在运行时动态地获取...