zoukankan      html  css  js  c++  java
  • object.getClass()和Object.class的区别

    两者的区别如下: 
    类名.class叫做“类字面量”,因class是关键字, 所以类名.class编译时确定。而getclass()是某个具体的方法来调用,是运行时根据实际实例确定,getClass()是动态而且是final的。 
    例如: 
    String.class 是能对类名的引用取得在内存中该类型class对象的引用,而new String().getClass() 是通过实例对象取得在内存中该实际类型class对象的引用。 
    我们可以使用一个小例子来看两者的不同:

    1.抽象类

    package com.kang;
    public abstract class Animal {
    }
    • 1
    • 2
    • 3

    2.实例类

    package com.kang;
    
    public class Dog extends Animal {
        public static void main(String[] args) {
            Animal animal = new Dog();
            System.out.println(animal.getClass().getName());
            //输出com.kang.Dog
            System.out.println(Animal.class.getName());
            //输出com.kang.Animal
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.结果

    com.kang.Dog
    com.kang.Animal
    • 1
    • 2

    4.解释 
    animal.getClass().getName()是在程序运行时获得运行时实例的类类型。而Animal.class.getName()是在编译阶段就确定了的,与运行时的状态无关。

  • 相关阅读:
    第一次软工作业
    项目复审&事后诸葛亮分析
    测试与发布
    团队项目scrum冲刺日志合集
    团队作业3
    团队作业2
    团队作业1-团队展示&选题
    结对项目, 四则运算
    个人项目作业
    自我介绍+软工五问
  • 原文地址:https://www.cnblogs.com/ben-zhou/p/7814865.html
Copyright © 2011-2022 走看看