java中的getClass()方法的用法

java中的getClass()方法的用法getClass的定义以及使用方法getClass()的作用getClass()使用方式简单代码演示其他相关用法1.getName()和getCanonicalName()2.getDeclaredMethod()3.还有很多对class对象进行操作的方法getClass()的作用getClass()返回此Object的运行时该对象的类.该方法返回一个Class对象,可以通过该对象可…

大家好,又见面了,我是你们的朋友全栈君。

getClass()的作用

getClass() 返回此 Object 的运行时该对象的类. 该方法返回一个Class对象, 可以通过该对象可以获取某个类的相关信息, 如构造方法 属性 方法 等.

getClass()使用方式

1.首先new一个新对象 如 a
2.再通过 a.getClass() 来获取该对象

简单代码演示

  • Car.java
package main;

public class Car { 
   
    private String name;
    private int seat;

    private void showCar(){ 
   
        System.out.println(name + '有' + seat + "个座位");
    }
}
  • UseGetClass.java
package main;

public interface UseGetClass { 
   
    public static void main(String[] args) { 
   
        Car car = new Car();
        Class carClass = car.getClass(); // 使用getClass获取该对象的类

        System.out.println(carClass);
    }
}
  • 运行结果
class main.Car

其他相关用法

1.getName()和getCanonicalName()

getName()获取类名, getCanonicalName(): 返回权威的类名, 当为匿名类时, 返回输出的是null

代码示例:

  • Car.java
package main;

public class Car { 
   
    private String name;
    private int seat;

    private void showCar(){ 
   
        System.out.println(name + '有' + seat + "个座位");
    }

    // 内部类
    class TestCar { 
   
        private String testName;

        public void runTestCar(){ 
   
            System.out.println("测试车辆" + testName);
        }
    }

}
  • Tyre.java 抽象类 用于等会儿创建匿名内部类
package main;

public abstract class Tyre { 
   
    public String size;

    public void setSize(String size){ 
   
        this.size = size;
    }

    public String getSize(){ 
   
        return size;
    }
}
  • UseGetClass.java
package main;

public interface UseGetClass { 
   
    public static void main(String[] args) { 
   
        Car car = new Car();
        Class carClass = car.getClass();  // 使用getClass获取该对象的类

        System.out.println("获取对象的类Class" + carClass);

        // 创建内部类对象
        Car.TestCar testCar = car.new TestCar();
        System.out.println("内部类getName():" + testCar.getClass().getName());  // 获取类名
        System.out.println("内部类getCanonicalName():" + testCar.getClass().getCanonicalName());  // 获取权威类名

        // 创建匿名内部类
        Tyre tyre = new Tyre() { 
   
            @Override
            public void setSize(String size) { 
   
                super.setSize(size);
            }

            @Override
            public String getSize() { 
   
                return super.getSize();
            }
        };
        System.out.println("匿名内部类getName():" + tyre.getClass().getName());  // 获取类名
        System.out.println("匿名内部类getCanonicalName():" + tyre.getClass().getCanonicalName());  // 获取权威类名

    }
}

运行结果 :
获取对象的类Classclass main.Car
内部类getName():main.Car$TestCar
内部类getCanonicalName():main.Car.TestCar
匿名内部类getName():main.UseGetClass$1
匿名内部类getCanonicalName():null

2.getDeclaredMethod()

返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法
定义:

public Method getDeclaredMethod(String name, Class... parameterTypes) throws NoSuchMethodException,SecurityException

该方法有两个参数
name: 是一个字符串,指定所需的方法的名称
parameterTypes: 可选参数,是一个数组的Class对象识别方法的形参类型,在声明的顺序

返回值
匹配指定名称和参数的类的方法,此方法返回的Method对象

异常
NoSuchMethodException – 如果匹配方法未找到

NullPointerException – 如果name 为 null.

注意
getDeclaredMethod() 获取的是类自身声明的所有方法,包含public、protected和private方法。

getMethod () 获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。

代码示例

import java.lang.reflect.Method;

public class UseGetClass { 
   
  public static void main(String[] args) { 
   
      Car car = new Car();
      Class carClass = car.getClass();  // 使用getClass获取该对象的类
      try { 
   
          Method carMethod = carClass.getDeclaredMethod("showCar");  // 获取该类中的showCar方法
          System.out.println("method:" + carMethod);
      } catch (NoSuchMethodException e) { 
   
          e.printStackTrace();
      }
  }
}

3.还有很多对class对象进行操作的方法

常用的有如下:

  • getFields:获取public修饰的所有属性,返回一个Field数组(包括父类的)
  • getDeclaredFields:获取所有属性,返回一个Field数组
  • getField:传入一个参数(属性名),获取单个属性,返回一个Field对象,只能获取public修饰的
  • getDeclaredField:传入一个参数(属性名),获取单个属性,返回一个Field对象
  • getMethods:获取所有的public修饰的方法,包括父类的,返回Method
  • getDeclaredMethods:获取所有的返回,不包括父类,返回Method数组
  • getMethod:传入一个参数(方法名),返回一个Method对象,只能获取到public修饰的
  • getDeclared:传入一个参数(方法名),返回一个Method对象
  • newInstance:创建该类型的一个实例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149190.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午5:46
下一篇 2022年6月16日 下午5:46


相关推荐

  • Linux监控利器atop,安装,配置日志切割,网络监控netatop

    Linux监控利器atop,安装,配置日志切割,网络监控netatopLinux 监控利器 atop 安装 配置日志切割 网络监控 netatop

    2026年3月26日
    2
  • oracle创建索引和删除索引_oracle删除索引语句

    oracle创建索引和删除索引_oracle删除索引语句索引的创建createindexindex_nameontable(column_name1,column_name2);创建唯一索引createindexuniqueindex_nameontable(column_name1,column_name2);索引的删除。dropindexindex_name;以下两条语句是…

    2025年9月13日
    11
  • bat倒计时代码

    bat倒计时相信大家都想要代码吧,下面是代码。@echooffseta=(这里是几分不支持10分)setb=(这里是几秒):dao1set/ab=b-1ping-n2-w500127.1>nulclsecho倒计时:%a%分%b%秒if%b%==0(set/aa=a-1)else(gotodao1)if%a%==-1(goto…

    2022年4月17日
    55
  • java三大特征_java三大特性是什么?

    java三大特征_java三大特性是什么?java三大特性:1、封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;2、继承,从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力;3、多态,一个方法可以有多种实现版本,即“一种定义,多种实现”。Java三大特性,算是Java独特的表现,提到Java的三大特性,我们都会想到封装,继承和多态这是我们Java最重要的特性。封装(Encapsulat…

    2022年7月7日
    26
  • Oracle 11g R2 Rman备份与恢复

    Oracle 11g R2 Rman备份与恢复Oracle11gR2Rman备份备份与恢复的定义及分类备份的定义及分类:备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本,从不同的角度分类如下:从物理与逻辑的角度来分类:从物理与逻辑的,备份可以分为物理备份和逻辑备份。物理备份…

    2022年5月8日
    125
  • java的线程是用户态还是内核态_内核态和用户态的区别

    java的线程是用户态还是内核态_内核态和用户态的区别内核态用户态是什么?操作系统对程序的执行权限进行分级,分别为用户态和内核态。用户态相比内核态有较低的执行权限,很多操作是不被操作系统允许的,简单来说就是用户态只能访问内存,防止程序错误影响到其他程序,而内核态则是可以操作系统的程序和普通用户程序内核态:cpu可以访问计算机所有的软硬件资源用户态:cpu权限受限,只能访问到自己内存中的数据,无法访问其他资源为什么要有用户态和内核态?系统需要限制不同的程序之间的访问能力,防止程序获取不相同程序的内存数据,或者外围设备的数据,并发送到网络,所有cpu

    2025年11月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号