softjava
softjava
随笔 - 0, 文章 - 2, 评论 - 0, 引用 - 0
数据加载中……
利用java反射技术提取类信息
1
package
day15;
2
3
import
java.lang.reflect.
*
;
4
5
public
class
ReflectionTest {
6
7
public
static
void
main(String[] args) {
8
9
Class c
=
null
;
10
11
try
{
12
13
c
=
Class.forName(args[
0
]);
14
15
System.out.println(
"
package
"
+
c.getPackage().getName()
+
"
;
"
);
16
17
System.out.print(Modifier.toString(c.getModifiers())
+
"
"
);
18
19
System.out.print(
"
class
"
+
c.getSimpleName());
20
21
if
(c.getSuperclass()
!=
Object.
class
){
22
23
System.out.print(
"
extends
"
+
c.getSuperclass().getSimpleName());
24
25
}
26
27
Class[] inters
=
c.getInterfaces();
28
29
if
(inters.length
>
0
){
30
31
System.out.print(
"
implements
"
);
32
33
for
(
int
i
=
0
;i
<
inters.length;i
++
){
34
35
System.out.print(inters[i].getSimpleName());
36
37
if
(i
<
inters.length
-
1
){
38
39
System.out.print(
"
,
"
);
40
41
}
42
43
}
44
45
}
46
47
48
49
System.out.println(
"
{
"
);
50
51
//
System.out.println("\t
");
52
53
printFields(c);
54
55
printMethods(c);
56
57
System.out.println(
"
}
"
);
58
59
60
61
}
catch
(ClassNotFoundException e) {
62
63
e.printStackTrace();
64
65
}
66
67
}
68
69
70
71
public
static
void
printFields(Class c){
72
73
Field[] fs
=
c.getDeclaredFields();
74
75
for
(
int
i
=
0
;i
<
fs.length ;i
++
){
76
77
System.out.print(
"
\t
"
+
Modifier.toString(fs[i].getModifiers()));
78
79
System.out.print(
"
"
+
fs[i].getType().getSimpleName());
//
类名
80
81
System.out.print(
"
"
+
fs[i].getName()
+
"
;
"
);
82
83
}
84
85
}
86
87
88
89
public
static
void
printMethods(Class c){
90
91
92
93
Method[] ms
=
c.getDeclaredMethods();
94
95
for
(
int
i
=
0
;i
<
ms.length ;i
++
){
96
97
System.out.print(
"
\t
"
+
Modifier.toString(ms[i].getModifiers()));
98
99
System.out.print(
"
"
+
ms[i].getReturnType().getSimpleName());
100
101
System.out.print(
"
"
+
ms[i].getName()
+
"
"
+
"
(
"
);
102
103
104
105
Class[] parameters
=
ms[i].getParameterTypes();
106
107
for
(
int
j
=
0
;j
<
parameters.length;j
++
){
108
109
System.out.print(parameters[j].getSimpleName()
+
"
arg
"
+
j);
110
111
if
(j
<
parameters.length
-
1
){
112
113
System.out.print(
"
,
"
);
114
115
}
116
117
}
118
119
System.out.print(
"
)
"
);
120
121
Class[] exceptions
=
ms[i].getExceptionTypes();
122
123
if
(exceptions.length
>
0
){
124
125
System.out.print(
"
throws
"
);
126
127
for
(
int
k
=
0
;k
<
exceptions.length;k
++
){
128
129
System.out.print(exceptions[k].getSimpleName());
130
131
if
(k
<
exceptions.length
-
1
){
132
133
System.out.print(
"
,
"
);
134
135
}
136
137
}
138
139
}
140
141
System.out.println(
"
{
"
);
142
143
System.out.println(
"
\t\t
"
);
144
145
System.out.println(
"
\t}
"
);
146
147
}
148
149
}
150
151
}
152
153
编译时给定要提取的类做参数。 java ReflectionTest.java java.lang.String 即可!
posted on 2008-10-10 12:57
ChengLei
阅读(122)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © ChengLei
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2025年7月
>
日
一
二
三
四
五
六
29
30
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
1
2
3
4
5
6
7
8
9
留言簿
给我留言
查看公开留言
查看私人留言
文章档案
2008年10月 (2)
搜索
最新评论