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:创建该类型的一个实例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Linux使用rpm命令卸载软件[通俗易懂]

    Linux使用rpm命令卸载软件[通俗易懂]window上面要卸载一个软件很容易,在系统软件管理里面或者通过第三应用工具,比如360软件管理。如果是Linux需要卸载一个软件应该怎么样操作??rpm-q-a#查询所有已安装的软件-qquery查询-aall所有查询所有安装的软件[root@cdh1~]#rpm-q-agnome-session-xsession-2.28.0-18.el6.x86_64m17n-contrib-assamese-1.1.10-4.el6_1.1.noarchm17n-con

  • JavaWeb-简单学生信息管理系统的实现-Jsp+Servlet+MySql

    JavaWeb-简单学生信息管理系统的实现-Jsp+Servlet+MySql关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

  • 圆圈正义读后感_为了公平正义观后感800

    圆圈正义读后感_为了公平正义观后感800圆圈正义半书观后感​ 这段时间读了一本书,名字叫《圆圈正义》,这本书的作者是罗翔,可能大家在抖音上经常刷到过,人称法外狂徒张三,经常会用很有趣的语言来讲述法律知识。​ 我认识他是因为他说过一段话:“我们登上我们并非我们所选择的舞台,演出并非我们所选择的剧本,我们这一生中自己能够决定的东西很少,我们可能能决定5%的东西,但95%的东西是我们决定不了的,我们决定不了我们的出生,我们决定不了我们的智商,我们更决定不了我们这一生的贵人相助,很多时候我们经常会羡慕别人,但是没有谁的剧本值得羡慕,你只能把你自己

    2022年10月22日
  • Android studio安装教程[通俗易懂]

    Android studio安装教程[通俗易懂]Androidstudio安装教程傻瓜式教程如果想要彻底重装Androidstudio可以删除目录C:\Users\用户名中的以下几个文件夹。.android.gradle.Androidstudio(Androidstudio4.0版本之前才有)隐藏文件夹(Androidstudio4.0版本后才有)C:\Users\用户名\AppData\Roaming\Google\AndroidStudio4.1C:\Users\用户名\AppData\Local\Google\A

  • 关于2020最新Kali无法使用arpspoof命令解决(在源和包都已经安装的情况下)

    关于2020最新Kali无法使用arpspoof命令解决(在源和包都已经安装的情况下)第一步可以参照这个https://hlynford.com/565.html如果你按照上面的步骤安装了相应的包,还是没有相应的命令,那多半就是路径的问题了第二部[root@server~]#echo$PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin如果输出的东西和上面不一样…

  • SCRT不能链接虚拟机,cmd命令也不能ping同虚拟机ip。但是虚拟机能够联网[通俗易懂]

    SCRT不能链接虚拟机,cmd命令也不能ping同虚拟机ip。但是虚拟机能够联网[通俗易懂]SCRT不能链接虚拟机,cmd命令也不能ping同虚拟机ip。但是虚拟机能够联网

发表回复

您的电子邮箱地址不会被公开。

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