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:创建该类型的一个实例
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
