获取class类的对象
1、使用类的class属性来获取该类对应的Class对象。举例:Student.class将会返回Student类对应的Class对象
2、调用对象的getClass()方法,返回该对象所属类对应的Class对象
该方法是Object类中的方法,所有的Java对象都可以调用该方法
3、使用Class类中的静态方法forName(String className),该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径
public class Student {
//成员变量:一私有,一默认,一共有
private String name;
int age;
public String address;
//构造方法:一私有,一默认,两公共
public Student(){
}
private Student(String name){
this.name = name;
}
Student(String name,int age){
this.name = name;
this.age = age;
}
public Student(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
//成员方法:一个私有,四个公共
private void function(){
System.out.println("function");
}
public void method1(){
System.out.println("method1");
}
public void method2(String s){
System.out.println("method2" + s);
}
public String method3(String s,int i ){
return s+","+i;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
public static void main(String[] args) throws ClassNotFoundException {
// 用类的class属性来获取该类对应的Class对象
Class<Student> c1 = Student.class;
System.out.println(c1);// 输出的结果是:class com.testReflex.Student
Class<Student> c2 = Student.class;
System.out.println(c1 == c2);// 输出的结果是:true
System.out.println("------------------------");
// 调用对象的getClass()方法,返回该对象所属类对应的Class对象
Student s = new Student();
Class<? extends Student> c3 = s.getClass();
System.out.println(c1 == c3);// 输出的结果是:true
System.out.println("------------------------");
// 使用Class类中的静态方法forName(String className)
// forName需要抛出异常
Class<?> c4 = Class.forName("com.testReflex.Student");
System.out.println(c1 == c4);// 输出的结果是:true
//第一种方式最方便 最后的方式灵活性更高
}