`

Class.forName("className"),class.getClass,class.class区别

 
阅读更多
今天看java.lang.reflect包中的信息时,想到了这几个得到Class对象的方法的区别
类名.class;// 该方法最为安全可靠,程序性能更高。
对象明.getClass();
Class.forName("className");// 可能抛出ClassNotFoundException异常


其中的区别:
Class.class和getClass()是在编译期间加载而forName()是在运行期间加载
Class.class只是在编译时用来存放类的相关信息,并没有实例化对象而getClass()既实例化了对象,有存放了类信息

package test;

import bean.TestBean;

public class TestGetClass {

	/**
         * http://www.importnew.com/1796.html
	 */
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		TestBean tb = new TestBean();
		// 第一种
		System.out.println(tb.getClass());
		// 第二种
		System.out.println(Class.forName("bean.TestBean"));
		// 第三种
		System.out.println(TestBean.class);
		
		System.out.println("-------------------");
		
		System.out.println(new TestBean());
		System.out.println(TestBean.class.newInstance());
		
		System.out.println("--------------------------");
		
		System.out.println(tb.getClass().newInstance());
		System.out.println(tb);

	}
}
分享到:
评论

相关推荐

    class literal & instance.getClass() & Class.forName(String className)

    在Java编程语言中,"class literal"、"instance.getClass()" 和 "Class.forName(String className)" 是三个与类加载和类型查询紧密相关的概念。了解这些概念对于深入理解Java运行时的类加载机制至关重要。 首先,让...

    Java 反射(Reflection) 经典实用例子

    Class ownerClass = Class.forName(className) :首先得到这个类的Class。 Field field = ownerClass.getField(fieldName):和上面一样,通过Class得到类声明的属性。 Object property = field.get(ownerClass) :...

    JAVA基础--JAVA中的反射机制详解

    在上面的代码中,首先通过 `Class.forName(className)` 获取该类的 Class,然后配置参数的 Class 数组,接着通过 `ownerClass.getMethod(methodName, argsClass)` 获取该类的静态方法,最后通过 `method.invoke(null...

    Java中Class对象详解.docx

    Class<?> clazz = Class.forName("fully.qualified.className"); ``` - **示例**: ```java Class<?> testTypeForName = Class.forName("TestClassType"); ``` - **注意事项**: - 使用此方法时需要捕获`...

    java反射原理及作用

    Class<?> ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(null); return property; } ``` 这里演示了如何获取静态字段的值。与上例不同...

    Java反射经典实例 Java Reflection Cookbook[1].pdf

    Class ownerClass = Class.forName(className); // 通过类名获取Class对象 Field field = ownerClass.getField(fieldName); // 获取指定名称的公共字段 Object property = field.get(ownerClass); // 获取静态...

    java中的Class类和反射.docx

    - **`public static Class<?> forName(String className)`**:这是一个原生方法,用于动态加载类。这个方法非常关键,比如在SQL中动态加载数据库驱动时会用到:`Class.forName("com.mysql.jdbc.Driver")`。 - **`...

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

    Class<?> clazz = Class.forName(className); classCache.put(className, new SoftReference(clazz)); return clazz; } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } } ``` 3. *...

    JAVA反射机制应用

    Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } ``` 在执行某对象的方法时,我们可以使用...

    java反射机制及Method.invoke解释

    这个方法首先通过 `Class.forName(className)` 得到该类的 Class,然后通过 `getField(fieldName)` 得到类声明的属性,最后通过 `field.get(ownerClass)` 得到该静态属性的实例。 要执行某对象的方法,我们可以使用...

    java反射使用

    - 使用`Class.forName(String className)`方法,如`Class.forName("java.lang.String")`。 2. **Field类**:表示类中的字段(包括属性和静态变量)。主要方法包括: - `Field getField(String name)`:获取指定...

    认识Java的Class类.doc

    - 使用`Class.forName(String className)`方法,根据类名动态加载类,同时创建Class对象。 - 类的静态块执行时,如果类还未加载,JVM也会加载该类并创建Class对象。 2. **getClassName()方法**:`obj.getClass()....

    java reflect

    Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); return field.get(null); // 注意这里传入null } ``` ##### 3.3 调用方法 除了访问字段之外,反射还可以用来...

    反射:java知识中的重点

    2. **使用`Class.forName(String className)`**: ```java Class<?> demoClass = Class.forName("Reflect.Demo"); ``` 3. **使用对象的`getClass()`方法**: ```java Demo demo = new Demo(); Class<?> demo...

    java反射机制

    如`Class ownerClass = Class.forName(className)`获取类的Class,`Field field = ownerClass.getField(fieldName)`获取静态字段,然后`field.get(ownerClass)`获取静态属性的值。 3. 执行对象的方法: 调用对象的...

    反射机制.txt

    Class<?> ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } ``` 这段代码展示了如何获取一个类的静态...

    JAVA反射机制详解

    Class<?> ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } ``` 此示例演示了如何获取静态字段的值。...

    java反射.ppt

    - `Class.forName(String className)`方法用于在运行时动态加载指定名称的类。在`ClassDemo`的示例中,`Class c = Class.forName("com.cn.Test")`将加载名为`com.cn.Test`的类,并可以进一步调用`newInstance()`...

    Java中的反射机制

    Class<?> ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(null); // null 表示静态字段 return property; } ``` - `Class.forName...

    温习java反射,让你对反射有全新的认识(csdn)————程序.pdf

    3. 调用`Class`类的静态方法`forName(String className)`。例如: ```java Class<?> clazz = Class.forName("java.util.Date"); ``` 这需要提供类的全限定名,并且如果类不存在,会抛出`ClassNotFoundException`。 ...

Global site tag (gtag.js) - Google Analytics