object.getClass()和Object.class的区别

来源:互联网 发布:淘宝迪曼宠物是真的吗 编辑:程序博客网 时间:2024/06/05 20:55

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

1.抽象类

package com.kang;public abstract class Animal {}

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

3.结果

com.kang.Dogcom.kang.Animal

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子玩心太大怎么办 开会听不懂讲什么怎么办 在国外玩手游老是进不去怎么办 广东普法考试不合格怎么办 尔雅考试错过了怎么办 大四考试错过了怎么办 电大考试错过了怎么办 吃了桂圆咳嗽怎么办 初中生游戏网瘾怎么办 孩子染上网瘾怎么办 郑州孩子厌学有网瘾怎么办 孩子网瘾严重怎么办 学生上课玩手机怎么办 老脱发怎么办才好 好几个月不来月经怎么办 电脑辐射脸上起痘痘怎么办 脸被手机辐射怎么办 宝宝沉迷于电视怎么办 青少年长了白发怎么办 刮胡子刮多了怎么办 孩子就不学习怎么办 长大了内心脆弱怎么办 10岁不想长大怎么办 18青少年血压高怎么办 大学生老是网贷怎么办 网贷报案通告怎么办 担保公司破产了怎么办 抵押车被锁定怎么办 高级营销师取消怎么办 留学生小签过期怎么办 加拿大工签被拒怎么办 在编教师落聘了怎么办 www.osta.org.cn怎么办 幸福蓝海尊享卡过期了怎么办 功率因素为负值怎么办? 镍氢电池过度放电后充不进怎么办 商铺电量不够怎么办 商铺电量不足怎么办 超出工作频率范围怎么办 三相四线没220v怎么办 三相电电压高怎么办