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();

java中getClass()方法简介相关推荐

  1. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  2. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  3. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  4. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  5. java中main方法前的public static void及其后面的(String[] args)【笔记自用】

    为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...

  6. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站

    Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...

  7. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  8. java中的方法求和_在Java中模拟求和类型的巧妙解决方法

    java中的方法求和 在继续阅读实际文章之前,我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich ,他在我面前有了这个主意: @lukaseder尝试使用静态方法<T,T ...

  9. Java中的方法(形参及实参)return返回类型

    如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...

最新文章

  1. Android SqliteManager 源码
  2. jQuery 的一个自动向上翻页的效果
  3. python cannot import name main_virtualenv: cannot import name 'main'
  4. java数组元素的排序_java学习之数组元素排序,冒泡排序和选择排序
  5. 【网赚工具】语音转文字神器,无需安装就能使用,支持长语音识别
  6. SQLite之C++封装库CppSQLite使用方法
  7. H5手机转盘抽奖活动游戏页面源码
  8. table模板标签,批量多选失效的问题,tr td结构多选框失效相关问题
  9. 二极管三极管电路原理和理解
  10. 三级模式两级映像/数据库系统结构
  11. 如何区分静态网页与动态网页
  12. php风格模板,phpwind冷色调整站风格模板
  13. Python基础之列表(list)操作
  14. 怎么学好Web前端开发 有哪些相关书籍推荐
  15. 2023程序员秋招准备 c/c++Linux后端开发岗(简历/技术面)技能体系总结
  16. Web容器(一):Web容器简介
  17. twitter系统架构
  18. ssm基于大数据的智能公交平台的设计与实现毕业设计源码261620
  19. 从16K跳槽到20K,最后算下来年薪却还降了,我笑了····
  20. javaweb JAVA JSP幼儿园事务管理系统jsp幼儿早教中心网站系统 Java幼儿园网站源码

热门文章

  1. CSS | 探究网站变灰色的那些知识盲区的知识碎片
  2. mlr3绘制校准曲线
  3. LEAPMOTION开发UI专题(2)
  4. Leetcode 398 蓄水池抽样算法
  5. 阿里云、华为云、百度云等比较
  6. Java函数式编程入门之Function<T,R>接口
  7. 【论文阅读】Hiding Images in Plain Sight: Deep Steganography
  8. https证书申请是如何收费的
  9. 24. Vue防抖,禁止double click
  10. 禅道开源版一键安装linux,基于禅道当前的一键安装包(Windows和Linux)如何源码安装旗舰版禅道...