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年5月20日
    42
  • HTML空格符_HTML中什么表示特殊字符空格

    HTML空格符_HTML中什么表示特殊字符空格html+css代码在网页中如何插入打出空格字符实现方法摘要浏览器总是会截短HTML页面中的空格。HTML将所有空格字符,制表符,空格和回车符压缩为一个字符。如果要缩进段落,则不能简单地键入五个空格然后开始文本。如果您在文本中写10个空格,在显示该页面之前,浏览器会删除它们中的9个。如需在页面中增加空格的数量,您需要使用 字符实体。本篇就单介绍…

    2022年10月4日
    1
  • linux两个文件修改主机名

    linux修改主机名的方法用hostname命令可以临时修改机器名,但机器重新启动之后就会恢复原来的值。#hostname//查看机器名#hostname-i//查看本机器名对应的ip地址

    2021年12月24日
    40
  • 深度学习-图解卷积运算

    深度学习-图解卷积运算卷积神经网络 Convolutiona CNN 针对全连接网络的局限做出了修正 加入了卷积层 Convolution 层 和池化层 Pooling 知层 CNN 被广泛应用于图像识别 语音识别等各种场合 在图像识别的比赛中 基于深度学习的方法几乎都以 CNN 为基础 比如 AlexNet VGGNet GoogleIncept 及微软的 ResNet 等 上 近几年深度学习大放异彩 CNN 功不可没 单通道 二维卷积运算示例 如上图所示 红色的方框圈中的数

    2025年9月14日
    4
  • js三目运算符使用及嵌套

    js三目运算符使用及嵌套三目运算符基础格式:条件?a:b;下面根据一个实例来解释用法 vara=10;varb=5;varc=a>b?a:b;//定义一个c,如果a>b,那么取冒号前面的值(这里为a),如果a<=b,那么取冒号后面的值(这里为b)console.log(c);作用:三目运算符可…

    2022年6月17日
    58
  • [高通MSM8953_64][Android10]移除开机进入充电界面

    [高通MSM8953_64][Android10]移除开机进入充电界面文章目录开发平台基本信息问题描述解决方法开发平台基本信息芯片:MSM8953_64版本:Android10kernel:msm-4.9问题描述在移植开发Android10的时候,一开始是用debug版本编译调试的,一直都很正常,然后,准备提交测试的时候,编译user版本却无法正常进入系统,一直在开机logo跟充电界面循环跳转。这是因为设备进入了关机充电模式导致的,在lk阶段,将充电界面屏蔽,即可正常进入系统。解决方法diff–gita/bootable/bootloader

    2022年10月20日
    2

发表回复

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

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