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)


相关推荐

发表回复

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

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