package
Reflect;import
java.lang.reflect.Constructor;class
Person{ public
Person() { } public
Person(String name){ this.name=name; } public
Person(int
age){ this.age=age; } public
Person(String name, int
age) { this.age=age; this.name=name; } public
String getName() { return
name; } public
int getAge() { return
age; } @Override public
String toString(){ return
"["+this.name+" "+this.age+"]"; } private
String name; private
int age;}案例】接下来让我们取得其他类的全部属性吧,最后我讲这些整理在一起,也就是通过class取得一个类的全部框架
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class hello { public static void
main(String[] args) { Class<?> demo = null; try { demo = Class.forName("Reflect.Person"); } catch (Exception e) { e.printStackTrace(); } System.out.println("===============本类属性========================"); // 取得本类的全部属性 Field[] field = demo.getDeclaredFields(); for (int i =
0; i < field.length; i++) { // 权限修饰符 int mo = field[i].getModifiers(); String priv = Modifier.toString(mo); // 属性类型 Class<?> type = field[i].getType(); System.out.println(priv + " "
+ type.getName() + " " + field[i].getName() + ";"); } System.out.println("===============实现的接口或者父类的属性========================"); // 取得实现的接口或者父类的属性 Field[] filed1 = demo.getFields(); for (int j =
0; j < filed1.length; j++) { // 权限修饰符 int mo = filed1[j].getModifiers(); String priv = Modifier.toString(mo); // 属性类型 Class<?> type = filed1[j].getType(); System.out.println(priv + " "
+ type.getName() + " " + filed1[j].getName() + ";"); } }}
【案例】其实还可以通过反射调用其他类中的方法:
|
本文深入探讨了Java反射机制的原理与应用,包括获取类的属性和方法,调用类的方法,以及如何通过反射来增强程序的灵活性与扩展性。通过实例演示,读者能够掌握反射的基本使用方法。
1万+

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



