`

class getClass()

    博客分类:
  • java
 
阅读更多

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);
        }
    }
}
复制代码
分享到:
评论

相关推荐

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

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

    反射: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反射机制中getClass和class对比分析是JAVA编程中一个重要的知识点。JAVA反射机制中,getClass和class都是获取类名的方法,但是它们有着本质的区别。 首先,让我们了解...

    Object类和Scanner类

    - **`public final Class getClass()`**: - 此方法返回对象的运行时类。 - 运行时类提供了关于对象类型的元数据,可以用来执行反射操作。 - 示例代码展示了如何获取 `Student` 类的运行时类并输出其完整名称: ...

    java 反射getClass .class 的使用方法示例

    Java 反射机制中getClass()和.class的使用方法示例 本文主要介绍了 Java 反射机制中getClass()和.class的使用方法,并结合实例形式分析了 Java 类反射机制的相关操作技巧。 一、获取类的反射 在 Java 中,可以...

    AjaxPro的使用方法介绍使用

    public Class getClass() { Class cla = new Class(); cla.C_Id = 100; cla.C_Name = "34 班"; cla.Count = 20; return cla; } ``` 在客户端 JavaScript 中,你可以访问返回对象的属性: ```javascript ...

    ajaxPro 手册 文件操作

    public Class GetClass() { Class cla = new Class(); cla.C_Id = 100; cla.C_Name = "34 班"; cla.Count = 20; return cla; } ``` 2. **在客户端处理复杂对象** 客户端可以像处理简单类型一样处理这些...

    AjaxPro2.doc

    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 ...

    Java中通过Class类获取Class对象的方法详解

    通过Class类可以获取Class对象,获取Class对象有三种方式:通过Object类的getClass()方法、通过类名.class获取Class对象、通过Class类中的forName()方法。每种方式都有其特点和应用场景,掌握这些方式可以帮助开发者...

    Java-JDK、数据库系统开发、Web开发学习笔记

    * public final Class getClass():用于获得此对象的所有属性类的类名 * public int hashCode():用于获取一个此对象对应的哈希表 * public final void notify():用于唤醒一个等待此对象监视器的线程 * public ...

    浅谈java中类名.class, class.forName(), getClass()的区别

    Java 中类名.class, class.forName(), getClass() 的区别 Java 中有三种方式可以获取 Class 对象,即类名.class、class.forName() 和 getClass()。这些方法都可以获取 Class 对象,但是在获取 Class 对象的过程中,...

    JSP 9 大内置对象介绍

    - **`class getClass()`**:获取类。 - **`int hashCode()`**:获取哈希码。 - **`boolean equals(Object obj)`**:判断两个对象是否相等。 - **`void copy(Object obj)`**:复制对象。 - **`Object clone()`**:...

    JSP内置对象(9个常用的内置对象)

    1. **`class getClass()`**:获取对象的类。 2. **`int hashCode()`**:获取对象的哈希码。 3. **`boolean equals(Object obj)`**:判断两个对象是否相等。 4. **`void copy(Object obj)`**:复制对象。 5. **`...

    java元数据——CLass类

    4. 对于引用数据类的引用(必须初始化),可以通过 Object 类继承的 getClass() 方法获取这个引用的Class对象由于引用已经被初始化,所以这种方式也不会初始化静态域,因为静态域已经被初始化过。另外,前面的方式...

    j2ee 九大内置对象及其方法详细说明

    - **class getClass()**: 获取当前对象的类。 - **int hashCode()**: 返回该对象的哈希码值。 - **boolean equals(Object obj)**: 判断两个对象是否相等。 - **void copy(Object obj)**: 复制对象。 - **Object ...

    Java泛型的用法及T.class的获取过程解析

    entityClass =(Class) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } public T get(Serializable id) { T o = (T) getHibernateTemplate().get(entityClass, id);...

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

    上面的例子中,即使`date1`和`date2`是两个不同的`Date`对象,但它们所属的类相同,所以`getClass`方法返回的`Class`对象也是相同的。这是因为JVM只为每个类维护一个`Class`对象,不论该类实例化了多少个对象。 2....

    详解java中this.getClass()和super.getClass()的实例

    Java 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class<?> getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来获取当前类的 Class 对象,从而可以进行反射操作。 在 ...

    JavaScript实现获取dom中class的方法

    在该示例中,通过`document.getElementById`获取了具有特定id的元素,并调用`getClass`函数获取其class名为`cs`的子元素,最后通过`document.write`将这些子元素的`innerHTML`输出。 6. `document.write`方法: `...

Global site tag (gtag.js) - Google Analytics