反射:通过对象来获取类的相关信息。
例如:
package com.java1234;
public class Test1 {
public static void main(String[] args) {
HelloWorld h=new HelloWorld();
System.out.println(h.getClass().getName());
}
}
运行结果:
通过完整包路径来实例化类对象:
public class Test1 {
public static void main(String[] args) {
try {
Class<?> c=Class.forName("com.java1234.HelloWorld");
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:

通过完整包路径类型来实例化Class对象,再通过Class对象获取Student类实例:
public class Student {
private int id;
private int age;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";
}
}
public class Test1 {
public static void main(String[] args) {
Class<?> c=null;
try {
c=Class.forName("com.java1234.Student");
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Student s=null;
try {
s=(Student)c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s.setName("令狐冲");
s.setAge(12);
System.out.println(s);
}
}
运行结果:

本文深入探讨了Java反射机制的应用,包括通过对象获取类信息、按完整包路径实例化类对象及Class对象,以及通过Class对象获取类实例的过程。示例代码展示了如何使用反射创建对象并调用其方法。
1201

被折叠的 条评论
为什么被折叠?



