java中的getClass()方法的用法

getClass的定义以及使用方法

    • getClass()的作用
    • getClass()使用方式
    • 简单代码演示
    • 其他相关用法
        • 1.getName()和getCanonicalName()
        • 2.getDeclaredMethod()
        • 3.还有很多对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() {@Overridepublic void setSize(String size) {super.setSize(size);}@Overridepublic 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:创建该类型的一个实例


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部