`

Java中 class<?> 创建对象

 
阅读更多
class A{
    A(){ /五惨构造器
    }
     
    String name; //A的一个属性
    int id;//A的一个属性
    A(String name){ //含有一个String类型的构造器
    this.name = name;
    id = 0;
    }
     
     
    A(int id,String name){
    this.id = id;
    this.name = name;
    }
}
 
 
A functionA() throws Exception{ //注意必须抛出或捕获异常 
 Class<?> aClaz = Class.forName("A") ;//获取A的Class对象,注意这里必须是包名+类名
 //或你可以用下面的方法创建class对象
 //Class<?> aClaz = A.class; //注意Class的大小写,这个方法优于上面的方法
  
 创建A的一个实例,通过五惨构造器
 A a = (A)aClaz.newInstance(); //newInstance 是Class的方法,
 //他是利用Java反射生成一个对象,但是类型是Object的,所以我们要加上强制转换
 return a; 
}
 
A functionA(String name)throws Exception{
    //遇到有参构造器就不能直接newInstance了,我们必须获取Constructor对象
    Class<?> aClaz = Class.forName("A") ;
     
    //获取构造器,参数类型是String的Class类型
    Constructor con = aClaz.getConstructor(String.class);
     
    //利用构造器生成对象,并传入参数name
    A a = (A)con.newInstance(name)
     
    return a;
}
分享到:
评论

相关推荐

    StringtoList和StringtoMap和StringtoObject和StringtoArray

    如果JSON字符串代表的是一个自定义Java对象,你可以创建一个对应的类并使用Gson的`fromJson`方法将其转换: ```java class Fruit { private String name; private String color; // getters and setters... }...

    Java中Class对象详解.docx

    这是因为类的静态部分是在类加载时初始化的,而非静态部分则是在创建对象时初始化。 4. **实例化过程**:一旦`Class`对象生成完成,就可以通过反射等方式创建类的实例。创建实例时会触发非静态初始化块和构造函数的...

    java之反射优化(缓存思路)源码

    &gt;&gt;&gt; classCache = new ConcurrentHashMap&lt;&gt;(); public static Class&lt;?&gt; getClass(String className) { SoftReference&lt;Class&lt;?&gt;&gt; ref = classCache.get(className); if (ref != null) { Class&lt;?&gt; clazz = ref....

    Java 8个反射实例

    在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者能够在运行时动态地获取类的信息、创建对象、调用方法以及访问和修改字段。以下将详细介绍Java反射的8个关键实例。 1....

    java基础学习内容

    在Java中,`Class`是一个特殊类型,它表示一个类的实例,提供了关于类的信息和操作方法。可以通过以下三种方式获取`Class`对象: 1. **使用`new`关键字创建对象后通过`.getClass()`方法获取**:这种方式适用于已经...

    java反射笔记

    在Java中,反射机制的核心是`java.lang.Class`类,它代表了Java中的每一个类。当Java虚拟机(JVM)加载一个类时,会创建对应的Class对象,这个对象包含了该类的所有信息,包括类名、字段、方法等。 反射的主要作用...

    java反射原理及作用

    通过 `Class.forName()` 获取类信息,然后根据构造函数的参数类型获取构造函数,并最终调用 `newInstance()` 来创建对象实例。 ### 总结 Java反射机制为开发者提供了强大的动态操作能力,使得程序设计更加灵活。但...

    反射:java知识中的重点

    Class&lt;Demo&gt; demoClass = Demo.class; ``` 2. **使用`Class.forName(String className)`**: ```java Class&lt;?&gt; demoClass = Class.forName("Reflect.Demo"); ``` 3. **使用对象的`getClass()`方法**: ```java ...

    java反射使用

    2. **动态创建对象**:可以在运行时构造任意一个类的对象。 3. **访问类的成员变量和方法**:能够在运行时判断任意一个类所具有的成员变量和方法,并能够调用它们。 4. **调用对象的方法**:可以调用任意一个对象的...

    JAVA反射机制-Class类-Class对象的获取.pdf

    每当一个类或者接口被加载到JVM中时,就会创建一个与之关联的`java.lang.Class`对象。通过这个`Class`对象,我们可以访问被加载类的各种细节,比如字段、构造器、方法等。 #### 获取Class对象的方法 1. **通过对象...

    java XML转成LIST可以转成指定的类数组

    在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它结构清晰、易于阅读,常用于存储和传输数据。当处理XML文件时,有时我们需要将其内容转换为Java对象,如List,以便于操作和处理。本篇...

    Java反射值Method

    本文将深入探讨Java反射中的一个关键组件——`Method`,以及如何利用`Class`类的多种方法来获取和操作类的方法。 ### 一、`Method`与`Class`的关系 在Java反射中,`Method`类提供了访问类或接口声明的公共成员方法...

    Java反射机制经典版

    反射机制使得Java代码可以访问和修改类的私有属性、调用私有方法、创建对象实例,甚至可以改变类的行为。这种灵活性在处理不确定的类结构、插件系统、动态代理和元数据处理等场景中非常有用。 在Java中,反射的核心...

    Java Reflection (JAVA反射)详解

    要使用反射,首先需要获取类的`java.lang.Class`对象。这可以通过以下几种方式实现: - `Class&lt;?&gt; c = Class.forName("全限定类名");`:根据类的全限定名(包名+类名)加载类并返回其`Class`对象。 - `Class&lt;?&gt; c...

    JAVA反射机制详解

    反射是Java编程语言的一个核心特性,它允许程序在运行时获取类的信息,并且可以动态地创建对象和调用方法。这种能力使得Java程序具备了高度的灵活性和扩展性。本文将深入探讨Java反射机制的工作原理及其应用场景。 ...

    java反射

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时访问类的信息,并能够动态地创建对象、调用方法以及获取字段值等。这种能力对于框架设计、代码生成等场景具有重要意义。 #### 二、反射...

    Reflect.doc

    为了通过有参构造器创建对象,需要先获取到对应的`Constructor`对象,然后调用其`newInstance()`方法。 ```java Class clazz = Class.forName("reflect.Person"); Constructor&lt;?&gt;[] constructors = clazz....

    Java软件开发实战 Java基础与案例开发详解 15-2 使用Java反射机制 共16页.pdf

    &gt; clazz = Class.forName("java.util.ArrayList"); ``` 通过`Class.forName()`静态方法可以直接获取到一个类的`Class`对象。 **2. 获取类的包名** ```java String packageName = clazz.getPackage().getName...

    java反射机制学习(二):通过反射获取构造方法并实例化对象

    如果`SUser`类有一个无参构造方法,我们可以通过以下方式创建对象: ```java Constructor&lt;?&gt; constructor = clazz.getConstructor(); Object instance = constructor.newInstance(); ``` 在`GetClassInstanceDemo...

    Java Reflection(JAVA反射)详解

    反射API还允许我们动态地创建对象、调用方法、访问和修改字段值。例如,调用`newInstance()`可以创建类的新实例,`invoke(Object obj, Object... args)`可以调用指定对象上的方法。 ```java Object obj = clazz.new...

Global site tag (gtag.js) - Google Analytics