http://www.cnblogs.com/feiyun126/archive/2013/08/01/3229492.html
类名.class, class.forName(), getClass()区别
1:Class cl=A.class;
JVM将使用类A的类装载器, 将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象。
2:Class cl=对象引用o.getClass();
返回引用o运行时真正所指的对象(因为:子对象的引用可能会赋给父对象的引用变量中)所属的类的Class的对象 。
3:Class.forName("类名");
.装入类A,并做类的初始化
.getClass()是动态的,其余是静态的。
.class和class.forName()只能返回类内field的默认值,getClass可以返回当前对象中field的最新值
Class.forName() 返回的是一个类,.newInstance() 后才创建一个对象,Class.forName()的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的
待反射类:
package yerasel; public class Person { private String name = "Alfira"; public void getName() { System.out.println(name); } public void setName(String name, int a) { this.name = name + a; } }
反射代码:
package yerasel; import java.lang.reflect.Method; public class Test { /** * @param args */ public static void main(String[] args) { show("yerasel.Person"); } private static void show(String name) { try { // JVM将使用类A的类装载器,将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作 Class classtype3 = Person.class; // 获得classtype中的方法 Method getMethod3 = classtype3.getMethod("getName", new Class[] {}); Class[] parameterTypes3 = { String.class, int.class }; Method setMethod3 = classtype3 .getMethod("setName", parameterTypes3); // 实例化对象,因为这一句才会输出“静态初始化”以及“初始化” Object obj3 = classtype3.newInstance(); // 通过实例化后的对象调用方法 getMethod3.invoke(obj3); // 获取默认值 setMethod3.invoke(obj3, "Setting new ", 3); // 设置 getMethod3.invoke(obj3); // 获取最新 System.out.println("----------------"); // 返回运行时真正所指的对象 Person p = new Person(); Class classtype = p.getClass();// Class.forName(name); // 获得classtype中的方法 Method getMethod = classtype.getMethod("getName", new Class[] {}); Class[] parameterTypes = { String.class, int.class }; Method setMethod = classtype.getMethod("setName", parameterTypes); getMethod.invoke(p);// 获取默认值 setMethod.invoke(p, "Setting new ", 1); // 设置 getMethod.invoke(p);// 获取最新 System.out.println("----------------"); // 装入类,并做类的初始化 Class classtype2 = Class.forName(name); // 获得classtype中的方法 Method getMethod2 = classtype2.getMethod("getName", new Class[] {}); Class[] parameterTypes2 = { String.class, int.class }; Method setMethod2 = classtype2 .getMethod("setName", parameterTypes2); // 实例化对象 Object obj2 = classtype2.newInstance(); // 通过实例化后的对象调用方法 getMethod2.invoke(obj2); // 获取默认值 setMethod2.invoke(obj2, "Setting new ", 2); // 设置 getMethod2.invoke(obj2); // 获取最新 System.out.println("----------------"); } catch (Exception e) { System.out.println(e); } } }
相关推荐
在Java编程语言中,"class literal"、"instance.getClass()" 和 "Class.forName(String className)" 是三个与类加载和类型查询紧密相关的概念。了解这些概念对于深入理解Java运行时的类加载机制至关重要。 首先,让...
Class<?> demoClass = demo.getClass(); ``` **示例代码片段**: ```java public class HelloWorld { public static void main(String[] args) { Class<Demo> demoClass1 = Demo.class; Demo demo = new Demo()...
JAVA反射机制中getClass和class对比分析 JAVA反射机制中getClass和class对比分析是JAVA编程中一个重要的知识点。JAVA反射机制中,getClass和class都是获取类名的方法,但是它们有着本质的区别。 首先,让我们了解...
- **`public final Class getClass()`**: - 此方法返回对象的运行时类。 - 运行时类提供了关于对象类型的元数据,可以用来执行反射操作。 - 示例代码展示了如何获取 `Student` 类的运行时类并输出其完整名称: ...
Java 反射机制中getClass()和.class的使用方法示例 本文主要介绍了 Java 反射机制中getClass()和.class的使用方法,并结合实例形式分析了 Java 类反射机制的相关操作技巧。 一、获取类的反射 在 Java 中,可以...
public Class getClass() { Class cla = new Class(); cla.C_Id = 100; cla.C_Name = "34 班"; cla.Count = 20; return cla; } ``` 在客户端 JavaScript 中,你可以访问返回对象的属性: ```javascript ...
public Class GetClass() { Class cla = new Class(); cla.C_Id = 100; cla.C_Name = "34 班"; cla.Count = 20; return cla; } ``` 2. **在客户端处理复杂对象** 客户端可以像处理简单类型一样处理这些...
public Class getClass() { Class cla = new Class(); cla.C_Id = 100; cla.C_Name = "34班"; cla.Count = 20; return cla; } ``` 在客户端可以这样使用: ```javascript function Button5_onclick() { var ...
通过Class类可以获取Class对象,获取Class对象有三种方式:通过Object类的getClass()方法、通过类名.class获取Class对象、通过Class类中的forName()方法。每种方式都有其特点和应用场景,掌握这些方式可以帮助开发者...
* public final Class getClass():用于获得此对象的所有属性类的类名 * public int hashCode():用于获取一个此对象对应的哈希表 * public final void notify():用于唤醒一个等待此对象监视器的线程 * public ...
Java 中类名.class, class.forName(), getClass() 的区别 Java 中有三种方式可以获取 Class 对象,即类名.class、class.forName() 和 getClass()。这些方法都可以获取 Class 对象,但是在获取 Class 对象的过程中,...
- **`class getClass()`**:获取类。 - **`int hashCode()`**:获取哈希码。 - **`boolean equals(Object obj)`**:判断两个对象是否相等。 - **`void copy(Object obj)`**:复制对象。 - **`Object clone()`**:...
1. **`class getClass()`**:获取对象的类。 2. **`int hashCode()`**:获取对象的哈希码。 3. **`boolean equals(Object obj)`**:判断两个对象是否相等。 4. **`void copy(Object obj)`**:复制对象。 5. **`...
4. 对于引用数据类的引用(必须初始化),可以通过 Object 类继承的 getClass() 方法获取这个引用的Class对象由于引用已经被初始化,所以这种方式也不会初始化静态域,因为静态域已经被初始化过。另外,前面的方式...
- **class getClass()**: 获取当前对象的类。 - **int hashCode()**: 返回该对象的哈希码值。 - **boolean equals(Object obj)**: 判断两个对象是否相等。 - **void copy(Object obj)**: 复制对象。 - **Object ...
entityClass =(Class) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } public T get(Serializable id) { T o = (T) getHibernateTemplate().get(entityClass, id);...
上面的例子中,即使`date1`和`date2`是两个不同的`Date`对象,但它们所属的类相同,所以`getClass`方法返回的`Class`对象也是相同的。这是因为JVM只为每个类维护一个`Class`对象,不论该类实例化了多少个对象。 2....
Java 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class<?> getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来获取当前类的 Class 对象,从而可以进行反射操作。 在 ...
在该示例中,通过`document.getElementById`获取了具有特定id的元素,并调用`getClass`函数获取其class名为`cs`的子元素,最后通过`document.write`将这些子元素的`innerHTML`输出。 6. `document.write`方法: `...