精华内容
下载资源
问答
  • getClass

    2014-07-02 18:12:28
     大家都知道Object类有一个getClass()方法 打开API看看它是这样说的  返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。  返回:表示此对象运行时类的 Class ...
    小菜总结到 
        大家都知道Object类有一个getClass()方法 打开API看看它是这样说的 

    返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 
    返回:表示此对象运行时类的 Class 对象。
     
      疑问来了 返回此Object的运行时类 它这里Object运行时类指那个类? 什么又是运行时类的Class对象 它到底是啥对象? 
      来点代码吧 我们这里有两个类 Test类测试用的 还有一个Never类 
    Never类 
    Java代码  收藏代码
    1. package woca;  
    2.   
    3. public class Never {  
    4.       static{  
    5.           System.out.println("Never类被初始化了");  
    6.       }  
    7.       public void shuChu(){  
    8.           System.out.println("Never类shuChu()方法执行");  
    9.       }  
    10. }  


      Test类 
    Java代码  收藏代码
    1. package woca;  
    2.   
    3. public class Test {  
    4.     static{  
    5.         System.out.println("Test类被初始化了");  
    6.     }  
    7.     public void testClass() throws Exception, Exception{  
    8.         this.getClass();  
    9.     }  
    10.       
    11.     public void shuChu(){  
    12.         System.out.println("本类的Class对象");  
    13.     }  
    14.       
    15.     public static void main(String[] args) throws Exception {  
    16.         Test t = new Test();  
    17.         t.testClass();  
    18.     }  
    19. }  

    猜猜会输出什么? 。。。。。。。。 
    输出
    Java代码  收藏代码
    1. Test类被初始化了  
    到这里只能说明一个问题我们调用一个对象的getClass()方法会初始化这个类也就是执行static代码块  你可能会问这里的this指什么呢?  它指的那个对象呢? 
    答:是Object对象 其实你可以通过你的MyEclipse的自动代码提示功能看到 当你打点的时候会出来Object的许多方法 
    我们还是用代码来验证以下吧!下面我来改写main方法 
    Java代码  收藏代码
    1. package woca;  
    2.   
    3. public class Test {  
    4.     static{  
    5.         System.out.println("Test类被初始化了");  
    6.     }  
    7.     public void testClass() throws Exception, Exception{  
    8.          Object ob = this.getClass().newInstance();  
    9.         if (ob instanceof Object) {  
    10.             System.out.println("ob是一个Object实例");  
    11.               
    12.         }  
    13.     }  
    14.       
    15.     public void shuChu(){  
    16.         System.out.println("本类的Class对象");  
    17.     }  
    18.       
    19.     public static void main(String[] args) throws Exception {  
    20.         Test t = new Test();  
    21.         t.testClass();  
    22.     }  
    23. }  

    输出结果是: 
    Java代码  收藏代码
    1. Test类被初始化了  
    2. ob是一个Object实例  

    所以this指的是Object对象 

    接下来我们看这个main方法 
    Java代码  收藏代码
    1. package woca;  
    2.   
    3. public class Test {  
    4.     static{  
    5.         System.out.println("Test类被初始化了");  
    6.     }  
    7.     public void testClass() throws Exception, Exception{  
    8.         Test test = this.getClass().newInstance();  
    9.         test.shuChu();  
    10.     }  
    11.       
    12.     public void shuChu(){  
    13.         System.out.println("本类的Class对象");  
    14.     }  
    15.       
    16.     public static void main(String[] args) throws Exception {  
    17.         Test t = new Test();  
    18.         t.testClass();  
    19.           
    20.     }  
    21. }  

    输出结果: 
    Java代码  收藏代码
    1. Test类被初始化了  
    2. 本类的Class对象  

    这说明我们这句:Test test = this.getClass().newInstance();得到了一个Test对象  我们调用object.getClass()方法 返回一个Class对象 
    这个Class对象 和Test对象不同 然后我们调用newInstance()创建了一个实例 
    API 里边说返回运行时类的Class对象 其实就是说 当前运行这个类的Class对象(在你不指定对象的情况下) 
    java.lang.Class类里边有很多实用的方法 当你得到一个对象的Class对象之后就可以调用这些方法 
    这个类里边只要一个静态方法那就是forName("指定类名")其实它和getClass 的功能一样都会对一个类初始化都是返回一个对象的Class对象 只不过它的参数里边直接指定类名  注意这个参数 是完全限定类型鸟 得加上包名! 还有它是一个静态方法你可以直接Class.forName()这样用方便些如果你这样写:
    Java代码  收藏代码
    1. this.getClass().forName("woca.Test");  

    效果和this.getClass();一样只不过上边那种有点二 
    forName()方法还有一个重载方法 
    类似这种
    Java代码  收藏代码
    1. Class.forName("woca.Never"falsethis.getClass().getClassLoader());  

      第一个参数还是指定类名 第二个参数指定要不要初始化 第三个参数是指定类的加载器 
    我把第二参数改为false 就不会初始化Never这个类 也就不会执行静态代码块了!
    展开全文
  • getclass

    2009-08-04 13:17:00
    getclass()运行时根据实际实例确定public final Class<?> getClass() 返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 实际结果类型是 Class<? ...
    getclass()运行时根据实际实例确定
    public final Class<?> getClass()
    返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。

    实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass 例如,以下代码片段中不需要强制转换:

    Number n = 0;
    Class<? extends Number> c = n.getClass();

     

    返回:
    表示此对象运行时类的 Class 对象。
    另请参见:
    The Java Language Specification, Third Edition (15.8.2 Class Literals)

    转载于:https://www.cnblogs.com/elina/archive/2009/08/04/1538394.html

    展开全文
  • 主要介绍了详解java中this.getClass()和super.getClass()的实例的相关资料,需要的朋友可以参考下
  • java中getClass()方法简介

    万次阅读 多人点赞 2018-01-23 14:56:38
    getClass() 返回此 Object 的运行时类。 一、示例代码: public class Test { public static void main(String[] args) { Person p = new Person(1,"刘德华"); System.out.println(p.getClass()); S

    getClass() 返回此 Object 的运行时类。


    一、示例代码:

    public class Test {
        public static void main(String[] args) {
            Person p = new Person(1,"刘德华");
            System.out.println(p.getClass());  
            System.out.println(p.getClass().getName()); 
        }
    }
    
    class Person{
        int id;
        String name;
        public Person(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
    }

    运行结果:
    这里写图片描述

    详解:

    System.out.println(p.getClass());

    1. getClass()返回Class类型的对象。
    返回的是内存中实实在在存在的Person 这个类
    这里写图片描述

    2. 返回类型为Class理解:
    一个男人有爸爸的称呼,丈夫(老公),还有儿子的称呼,还有爷爷,叔叔等等的称呼,而这些称呼的参照物不同导致有不同的称呼。当参照物是老婆时,这个男人的称呼是丈夫(老公),当参照物是男人的儿子时,此男人的称呼是爸爸。以此类推等等。

    同理对于Person类,或者准确的说每个类(除所有类的父类Object)也有两个称呼,既可以称为是类,也可称为变量。参照物不同称呼不同。

    上面的代码为例:
    参照物: Person的属性id,name 则:Person的称呼是类(Class)
    参照物: Class类 则:Person的称呼是变量/属性

    例如:
    String name
    Class Person

    name的类型是String,此时 Class Person 的性质和String name一样。
    String 等同于 Class,是类。
    name 等同于 Person,是对象 / 变量的称呼。

    String类下有很多方法供name对象使用,同理Class类下也有很多方法供Person对象使用。

    Class类和String类一样,都是继承于Object类,Object是所有类的根类 。

    3. getClass()方法的作用
    获得了Person这个(类)Class,进而通过返回的Class对象获取Person的相关信息,比如:获取Person的构造方法,方法,属性有哪些等等信息。

    3.1 获取Person的相关信息
    当我们想要获取Person的属性id或者想要调用Person的方法时,我们需要new Person()来创建一个Person的对象,通过对象来获取。

    Person p = new Person(1,”刘德华”);
    p.id // 对象调用属性来获取p的id属性

    同理,当我们想要获取Person的信息,比如:获取Person的名字,获取Person的构造函数,获取Person的继承关系等等这些Person的相关信息就不能仅仅只是通过new Person()的方式了
    而是需要获取内存中实实在在存在的这个Class Person,通过获取到的。

    Person p = new Person(1,”刘德华”);
    Class cla = p.getClass(); // 通过对象p调用getClass()方法返回Class

    然后通过cla对象来获取Person的相关信息,因为Class提供了大量的方法来获取类(?extends Object)的信息。

    String perName = cla.getName(); // 返回Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称

    记住: java是面向对象的。创建对象,通过对象来调用方法。

    总结:

    获取Person的相关信息步骤(这只是其中一种方法来获取,还有其他方法以后相继补上):**

    1. 创建对象: Person p = new Person(1,”刘德华”);
    2. 返回Class类型的对象: Class c = p.getClass();
      此时c是Class类型,Class提供了一系列的方法来获取类的相关信息,可以通过对象c来获取Person的信息。比如,获取Person这个类的类名:
      String perName = c.getName();
    展开全文
  • getClass方法

    千次阅读 2014-07-31 17:01:16
    第一:不管是T1的getClass()还是Date的getClass(),他们都是非覆盖式的从Object继承来的。 第二:Object的getClass()方法的释义是:返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static ...

    下面程序的输出结果是多少?
    import java.util.Date;
    public  class Test extends Date{
    public static void main(String[] args) {
    new Test().test();
    }

    public void test(){
    System.out.println(super.getClass().getName());
    }
    }

    很奇怪,结果是Test

    第一:不管是T1的getClass()还是Date的getClass(),他们都是非覆盖式的从Object继承来的。


    第二:Object的getClass()方法的释义是:返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。

        /**
         * Returns the runtime class of this {@code Object}. The returned
         * {@code Class} object is the object that is locked by {@code
         * static synchronized} methods of the represented class.
         **/

        释义指出,要返回此Object运行时类,这外当然不可能指Object自己了,否则所有类调用getClass()方法都返回Object.class了。

        那到底谁是Object的运行时类呢,不是Object自己,当然就只能是他的儿子、或各种孙子了,到底是谁呢,举个例子:
        Date作为直接继承Object的类,作为Object的儿子,如果调用Date.getClass(),返回的是什么呢?在Date中,无论是this.getClass()还是super.getClass(),毫无疑问都指向了Object.getClass()。根据上一段解释,Object.getClass()返回不可能是Object.class,那没得说,只能是Date.class了。

        根据上段:new Date()时,Date是Object的运行时类。

        同理:根据LZ的例子,new T1()时,运行是类不可能是T1他老子Date,更不会他各种老老子(如Object),只能是自己。

        再回到Object.getClass()释义,返回的只能是T1.class

    第三:如果想要从T1中得到Date.class,可以用T1.getClass().getSuperClass();
    展开全文
  • GetClass(...) is obsolete. It just calls TClass::GetClass(...). Instead, calling TClass::GetClass() directly is recommended by the ROOT team, and it saves a function call.</p><p>该提问来源于开源项目&#...
  • isa指针的实现是相当于调用方法:object_getClass(id )[object class]的实现相当于调用方法:objc_getClass(const char * _Nonnull name)这两个方法的区别可以通过下面两个例子来展示:Son *sonObject = [Son new];...
  • objc_getClass

    千次阅读 2015-10-30 14:48:36
    objc_getClass
  • object_getClass

    千次阅读 2015-10-30 13:08:37
    object_getClass
  • getClass()

    2019-12-23 20:11:01
    代码: ... public class ObjectDemo2 { public static void main(String[] args) { //创建对象 ObjectDemo2 od2=new ObjectDemo2(); //全路径名—包名+类名 ...System.out.println(od2.getClass()); }...
  • java getclass 对象类最终类getClass() (Object Class final Class getClass()) This method is available in java.lang.Object.getClass(). 此方法在java.lang.Object.getClass()中可用。 This method is used to ...
  • 原文地址:http://leihuang.org/2014/11/14/getClass-method/ 首先看一段代码: import java.util.Date; public class Test extends Date{ public static void main(String[] args) { new Test...
  • super.getClass()和this.getClass()
  • java getClass, getName

    千次阅读 2017-07-02 06:11:18
    java 中的 getClass 返回类的类型, 而 getName 可以返回类的名字, 举例: class Person{ String name; Person(String name){ this.name=name; } Person(){ this.name=""; } } public class ...
  • 关于runtime的objc_getClass和object_getclass

    千次阅读 2016-05-10 10:40:41
    objc_getClass参数是类名的字符串,返回的就是这个类的类对象;object_getClass参数是id类型,它返回的是这个id的isa指针所指向的Class,如果传参是Class,则返回该Class的metaClass。 Class currentClass = [self ...
  • 今天dubug代码时发现this.getClass()和super.getClass()得到的竟然是同一个类,都是当前类。 遍访网络资料得出:  getClass()不受this和super影响,而是有当前的运行类决定的。 详细解释:  getClass public...
  • <p>I faced some loops in our phpcr admin imlementation casuse we used <code>getClass() method in our</code>AbstractAdmin::getSubject()` implementation, cause getClass() calls getSubject() again. ...
  • 主要介绍了JAVA反射机制中getClass和class对比分析,具有一定参考价值,需要的朋友可以了解下。
  • final_getclass笔记

    2019-05-12 10:21:05
    1.某类对象.getClass() 获取class对象 某类对象.getSuperClass() 获取超类对象 class对象.getName() 获取当前class对象的名称(带包名) getSimpleName() 获取当前class对象的名称(不带包名) 例如: @...
  • Java Object getClass() 方法 Java Object 类 Object getClass() 方法用于获取对象的运行时对象的类。 语法 object.getClass() 参数 无。 返回值 返回对象的类。 实例 以下实例演示了 getClass() 方法...
  • 主要介绍了java 反射getClass .class 的使用方法,结合实例形式分析了java类反射机制的相关操作技巧,需要的朋友可以参考下
  • 主要介绍了Java instanceof和getClass()区别实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本篇文章介绍了,在java中instanceof和getClass()的区别分析。需要的朋友参考下
  • 主要介绍了javascript实现类似java中getClass()得到对象类名的方法,实例分析了javascript实现java中getClass方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • .getClass();

    2019-09-28 12:28:18
    可以用.class返回此 Object 的运行时类Class对象,也可以用getClass()获得。获得此对象后可以利用此Class对象的一些反射特性进行操作,例如:this.getClass().newInstance(); //用缺省构造函数创建一个该类的对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,315
精华内容 5,726
关键字:

getclass