我是靠谱客的博主 俊逸犀牛,这篇文章主要介绍获取class对象的三种方式以及获取其中的属性对象,现在分享给大家,希望可以做个参考。

看到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
public class Father { private String sex; public String identity; } @RestController @RequestMapping("/") public class HelloController extends Father{ private String name; public int age; @GetMapping("hello") public String Hello(){ System.out.println("hello"); ServletRequestAttributes sra= (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); StringBuffer url = sra.getRequest().getRequestURL(); return "success,test1111111"; } public void test11(){ System.out.println("111"); } private void test22(){ System.out.println("22"); } }

TestController:

复制代码
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class testController { public static void main(String[] args) { testClass(); } public static void testClass(){ try { //获取类对象的三种方法 //xx.getClass() HelloController hello=new HelloController(); Class<? extends HelloController> hh = hello.getClass(); System.out.println("对象1:"+hh); //getFields()获取的是类和他的超类的所有public fields Field[] fields1 = hh.getFields(); for (Field field : fields1) { System.out.println("测试getFields():"+field); } System.out.println("======================"); //getDeclaredFields()获取的是类中所有的fields Field[] fields2 = hh.getDeclaredFields(); for (Field field : fields2) { System.out.println("测试getDeclaredFields():"+field); } System.out.println("======================"); //xx.class xx是类名 //getMethods()获取的是类和他的超类所有的public method Method[] method1 = HelloController.class.getMethods(); System.out.println("method111:"+method1); for (Method method : method1) { System.out.println("测试getMethods:"+method.getName()); } System.out.println("======================"); // Class.forName("com.springcloud.eurekaclient.controller.HelloController"), 需要全路径类名 //不然会报classNotFoundException Class<?> helloController = Class.forName("com.springcloud.eurekaclient.controller.HelloController"); //getDeclaredMethods()获取的是类中所有的method Method[] method2 = helloController.getDeclaredMethods(); System.out.println("method222:"+method2); for (Method method : method2) { System.out.println("测试getDeclaredMethods:"+method.getName()); } System.out.println("======================"); //利用class对象创建实例对象 HelloController helloController1 = hh.newInstance(); System.out.println(helloController1.toString()); System.out.println("======================"); //method对象使用invoke调用某个方法 需要是public方法 Method test11 = hh.getMethod("test11"); //参数须传入实例对象 Object invoke = test11.invoke(helloController1); } catch (Exception e) { e.printStackTrace(); } } }

运行的结果:

复制代码
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
对象1:class com.springcloud.eurekaclient.controller.HelloController 测试getFields():public int com.springcloud.eurekaclient.controller.HelloController.age 测试getFields():public java.lang.String com.springcloud.eurekaclient.controller.Father.identity ====================== 测试getDeclaredFields():private java.lang.String com.springcloud.eurekaclient.controller.HelloController.name 测试getDeclaredFields():public int com.springcloud.eurekaclient.controller.HelloController.age ====================== method111:[Ljava.lang.reflect.Method;@4459eb14 测试getMethods:test11 测试getMethods:Hello 测试getMethods:wait 测试getMethods:wait 测试getMethods:wait 测试getMethods:equals 测试getMethods:toString 测试getMethods:hashCode 测试getMethods:getClass 测试getMethods:notify 测试getMethods:notifyAll ====================== method222:[Ljava.lang.reflect.Method;@5a2e4553 测试getDeclaredMethods:test11 测试getDeclaredMethods:Hello 测试getDeclaredMethods:test22 ====================== com.springcloud.eurekaclient.controller.HelloController@28c97a5 ====================== 111

最后

以上就是俊逸犀牛最近收集整理的关于获取class对象的三种方式以及获取其中的属性对象的全部内容,更多相关获取class对象内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部