java获取所有类的方法信息_Java学习笔记(七)——获取类中方法的信息,java的LinkedList...

本文介绍了如何在Java中获取类中方法的详细信息,包括`getDeclaredMethods()`与`getMethods()`的区别,并提供了示例代码展示获取方法名称、参数类型、返回值类型和修饰符等信息。此外,还讲解了Java的LinkedList使用,通过创建`LinkList`类封装LinkedList操作,如添加、删除元素,以及展示存储和遍历数据的示例。

【前面的话】

在实际项目中学习知识总是最快和最有效的,既能够较好的掌握知识,又能够做出点东西,还是简单的知识总结,最近一直在总结笔记,写的东西还是比较水,希望慢慢可以写出一些干货。

学习过程中的小知识点总结,基础文章,选择阅读。

【知识汇总】

一、获取一个类中方法的详细信息

1. getDeclaredMethods()方法和getMethods()的区别

1)getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。

2)getMethod*()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。

2. 如何得到一个类的方法的详细信息,下面的代码就是获得一个类的:

1)方法的名字

2)参数的类型

3)方法的返回值的类型

4)方法的修饰符有

5)方法的异常类型

3. 代码介绍:

1)ModifiersText.java实现获取Text类方法的信息

2)Test.java测试类

4. 代码:

1)ModifiersText.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importjava.lang.reflect.Method;2 importjava.lang.reflect.Modifier;3

4 public classModifiersText {5 public static void main(String[] args) throwsException {6 Class c=Class.forName("Test");7 //-------------------获取方法的详细信息8 //-------------------测试函数getDeclaredMethods()

9 Method m[]=c.getDeclaredMethods();10

11 for(int i=0;i

14 System.out.println("getDeclaredMethods()获得的方法的名字是:"+m[i].getName());15

16 //--------------------获得方法参数的类型和有几个参数

17 Class b[]=m[i].getParameterTypes();//获得所有的参数并且存放到数组B中

18 for(int j=0;j

22 //--------------------获得方法返回值的类型

23 System.out.println("getDeclaredMethods()获得的方法的返回值的类型"+m[i].getReturnType());//获得方法的返回值类型24

25 //--------------------获得方法的修饰符

26 int mod=m[i].getModifiers();27 System.out.println("getDeclaredMethods()获得的方法的修饰符有"+Modifier.toString(mod));28

29 //--------------------获得方法的异常类型

30 Class e[]=m[i].getExceptionTypes();//获得所有的异常类型存放到数组e中

31 for(int k=0;k

35 System.out.println("-------------------------------------------------------------------");36 }37

38 //-------------------获取方法的详细信息39 //-------------------测试函数getMethods()

40 Method n[]=c.getMethods();41

42 for(int i=0;i

45 System.out.println("getMethods()获得的方法的名字是:"+n[i].getName());46

47 //--------------------获得方法参数的类型和有几个参数

48 Class b1[]=n[i].getParameterTypes();//获得所有的参数并且存放到数组B中

49 for(int j=0;j

53 //--------------------获得方法返回值的类型

54 System.out.println("getMethods()获得的方法的返回值的类型"+n[i].getReturnType());//获得方法的返回值类型55

56 //--------------------获得方法的修饰符

57 int mod1=n[i].getModifiers();58 System.out.println("getMethods()获得的方法的修饰符有"+Modifier.toString(mod1));59

60 //--------------------获得方法的异常类型

61 Class e1[]=n[i].getExceptionTypes();//获得所有的异常类型存放到数组e中

62 for(int k=0;k

66 System.out.println("-------------------------------------------------------------------");67 }68 }69 }

View Code

2)Test.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 public classTest {2 public void test1(String[] args) throwsClassNotFoundException {3 }4

5 protected int test2(String[] args) throwsClassNotFoundException {6 return 0;7 }8 private double test3(String[] args) throwsClassNotFoundException {9 return 0;10 }11 }

View Code

5. 执行结果

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 getDeclaredMethods()获得的方法的名字是:test12 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;3 getDeclaredMethods()获得的方法的返回值的类型void4 getDeclaredMethods()获得的方法的修饰符有public5 getDeclaredMethods()获得的方法的异常类型是:classjava.lang.ClassNotFoundException6 -------------------------------------------------------------------

7 getDeclaredMethods()获得的方法的名字是:test28 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;9 getDeclaredMethods()获得的方法的返回值的类型int10 getDeclaredMethods()获得的方法的修饰符有protected11 getDeclaredMethods()获得的方法的异常类型是:classjava.lang.ClassNotFoundException12 -------------------------------------------------------------------

13 getDeclaredMethods()获得的方法的名字是:test314 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;15 getDeclaredMethods()获得的方法的返回值的类型double16 getDeclaredMethods()获得的方法的修饰符有private17 getDeclaredMethods()获得的方法的异常类型是:classjava.lang.ClassNotFoundException18 -------------------------------------------------------------------

19 getMethods()获得的方法的名字是:test120 getMethods()获得的参数的类型是class [Ljava.lang.String;21 getMethods()获得的方法的返回值的类型void22 getMethods()获得的方法的修饰符有public23 getMethods()获得的方法的异常类型是:classjava.lang.ClassNotFoundException24 -------------------------------------------------------------------

25 getMethods()获得的方法的名字是:wait26 getMethods()获得的方法的返回值的类型void27 getMethods()获得的方法的修饰符有public final

28 getMethods()获得的方法的异常类型是:classjava.lang.InterruptedException29 -------------------------------------------------------------------

30 getMethods()获得的方法的名字是:wait31 getMethods()获得的参数的类型是long32 getMethods()获得的参数的类型是int33 getMethods()获得的方法的返回值的类型void34 getMethods()获得的方法的修饰符有public final

35 getMethods()获得的方法的异常类型是:classjava.lang.InterruptedException36 -------------------------------------------------------------------

37 getMethods()获得的方法的名字是:wait38 getMethods()获得的参数的类型是long39 getMethods()获得的方法的返回值的类型void40 getMethods()获得的方法的修饰符有public final native

41 getMethods()获得的方法的异常类型是:classjava.lang.InterruptedException42 -------------------------------------------------------------------

43 getMethods()获得的方法的名字是:hashCode44 getMethods()获得的方法的返回值的类型int45 getMethods()获得的方法的修饰符有public native

46 -------------------------------------------------------------------

47 getMethods()获得的方法的名字是:getClass48 getMethods()获得的方法的返回值的类型class java.lang.Class49 getMethods()获得的方法的修饰符有public final native

50 -------------------------------------------------------------------

51 getMethods()获得的方法的名字是:equals52 getMethods()获得的参数的类型是class java.lang.Object53 getMethods()获得的方法的返回值的类型boolean54 getMethods()获得的方法的修饰符有public55 -------------------------------------------------------------------

56 getMethods()获得的方法的名字是:toString57 getMethods()获得的方法的返回值的类型class java.lang.String58 getMethods()获得的方法的修饰符有public59 -------------------------------------------------------------------

60 getMethods()获得的方法的名字是:notify61 getMethods()获得的方法的返回值的类型void62 getMethods()获得的方法的修饰符有public final native

63 -------------------------------------------------------------------

64 getMethods()获得的方法的名字是:notifyAll65 getMethods()获得的方法的返回值的类型void66 getMethods()获得的方法的修饰符有public final native

67 -------------------------------------------------------------------

View Code

========================我是2014年2月11日的分割线========================

二、java的LinkedList

项目中要使用到LinkedList,其实对于java来说这些结构都已经是写好了的,只需要去调用就可以了,开发就简单了好多。

1.代码结构:主要写了下面几个java文件,将对LinkedList的操作分开。

LinkList.java实现对LinkedList类中方法的重写定义,这样就可以方便的使用自己定义的方法名对LinkedList进行操作,逻辑结构也就更加清晰一些了。

LinkListInfo.java数据封转

StorageTest,.java实现存储数据

MainTest.java测试代码,取数

2.代码

LinkList.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagelinkedlisttest;2

3 importjava.util.LinkedList;4 importjava.util.List;5

6 /**

7 *@authorXT8 * 定义List9 *10 */

11

12 public classLinkList13 {14 private static LinkedList linklist = new LinkedList();15

16 public static voidaddToList(LinkListInfo displayinfo){17 linklist.add(displayinfo);18 }19

20 public static voidaddFistToList(LinkListInfo displayinfo){21 linklist.addFirst(displayinfo);22 }23

24 public static voidaddLastToList(LinkListInfo displayinfo){25 linklist.addLast(displayinfo);26 }27

28 public static voidremoveFistToList(){29 linklist.removeFirst();30 }31

32 public static voidremoveLastToList(){33 linklist.removeLast();34 }35

36 public staticList getList(){37 returnlinklist;38 }39 }

View Code

LinkListInfo.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagelinkedlisttest;2

3 public classLinkListInfo {4

5 privateString IdName;6 private intIdNum;7

8 publicString getIdName() {9 returnIdName;10 }11

12 public voidsetIdName(String idName) {13 IdName =idName;14 }15

16 public intgetIdNum() {17 returnIdNum;18 }19

20 public void setIdNum(intidNum) {21 IdNum =idNum;22 }23 }

View Code

StorageTest,.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagelinkedlisttest;2

3 public classStorageTest4 {5 public voidstorageTest (){6 for(int i=0;i<10;i++){7 LinkListInfo linklistinfo = newLinkListInfo();8 linklistinfo.setIdName("帅哥"+i);9 linklistinfo.setIdNum(i);10 LinkList.addToList(linklistinfo);//静态方法类可以直接使用

11 }12 }13

14 }

View Code

MainTest.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagelinkedlisttest;2

3 importjava.util.List;4

5 public classMainTest {6 public static voidmain(String[] args){7 StorageTest storagetest = newStorageTest();8 storagetest.storageTest();9 List linklistinfo =LinkList.getList();10 for(int i=0;i

View Code

3.结果

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 帅哥02 0

3 ..........4 帅哥15 1

6 ..........7 帅哥28 2

9 ..........10 帅哥311 3

12 ..........13 帅哥414 4

15 ..........16 帅哥517 5

18 ..........19 帅哥620 6

21 ..........22 帅哥723 7

24 ..........25 帅哥826 8

27 ..........28 帅哥929 9

30 ..........

View Code

========================我是2014年2月12日的分割线========================

【后面的话】

节后的生活有归于平静了,必须在接下来的日子学习到更多,不要着急,一点一点来。

分享:

社交网络≠阅读

阅读≠学习

学习≠生产

生产≠影响力

——TT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值