Java学习笔记(七)——获取类中方法的信息,java的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

 1 import java.lang.reflect.Method;

 2 import java.lang.reflect.Modifier;

 3 

 4 public class ModifiersText {

 5  public static void main(String[] args) throws Exception {

 6    Class c=Class.forName("Test");

 7    //-------------------获取方法的详细信息

 8    //-------------------测试函数getDeclaredMethods()

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

10  

11    for(int i=0;i<m.length;i++)

12    {

13      //--------------------获得方法的名字

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

15      

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

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

18      for(int j=0;j<b.length;j++){

19        System.out.println("getDeclaredMethods()获得的参数的类型是"+b[j]);

20      }

21      

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<e.length;k++){

32         System.out.println("getDeclaredMethods()获得的方法的异常类型是:"+e[k]);

33      }

34      

35    System.out.println("-------------------------------------------------------------------");

36   }

37    

38    //-------------------获取方法的详细信息

39    //-------------------测试函数getMethods()

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

41   

42    for(int i=0;i<n.length;i++)

43    {

44      //--------------------获得方法的名字

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

46      

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

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

49      for(int j=0;j<b1.length;j++){

50        System.out.println("getMethods()获得的参数的类型是"+b1[j]);

51      }

52      

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<e1.length;k++){

63         System.out.println("getMethods()获得的方法的异常类型是:"+e1[k]);

64      }

65      

66    System.out.println("-------------------------------------------------------------------");

67   }

68  }

69 }
View Code

       2)Test.java

 1 public class Test {

 2   public void test1(String[] args) throws ClassNotFoundException {

 3   }

 4   

 5   protected int test2(String[] args) throws ClassNotFoundException {

 6         return 0;

 7   }

 8   private double test3(String[] args) throws ClassNotFoundException {

 9         return 0;

10   }

11 }
View Code

    5. 执行结果

 1 getDeclaredMethods()获得的方法的名字是:test1

 2 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;

 3 getDeclaredMethods()获得的方法的返回值的类型void

 4 getDeclaredMethods()获得的方法的修饰符有public

 5 getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException

 6 -------------------------------------------------------------------

 7 getDeclaredMethods()获得的方法的名字是:test2

 8 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;

 9 getDeclaredMethods()获得的方法的返回值的类型int

10 getDeclaredMethods()获得的方法的修饰符有protected

11 getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException

12 -------------------------------------------------------------------

13 getDeclaredMethods()获得的方法的名字是:test3

14 getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;

15 getDeclaredMethods()获得的方法的返回值的类型double

16 getDeclaredMethods()获得的方法的修饰符有private

17 getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException

18 -------------------------------------------------------------------

19 getMethods()获得的方法的名字是:test1

20 getMethods()获得的参数的类型是class [Ljava.lang.String;

21 getMethods()获得的方法的返回值的类型void

22 getMethods()获得的方法的修饰符有public

23 getMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException

24 -------------------------------------------------------------------

25 getMethods()获得的方法的名字是:wait

26 getMethods()获得的方法的返回值的类型void

27 getMethods()获得的方法的修饰符有public final

28 getMethods()获得的方法的异常类型是:class java.lang.InterruptedException

29 -------------------------------------------------------------------

30 getMethods()获得的方法的名字是:wait

31 getMethods()获得的参数的类型是long

32 getMethods()获得的参数的类型是int

33 getMethods()获得的方法的返回值的类型void

34 getMethods()获得的方法的修饰符有public final

35 getMethods()获得的方法的异常类型是:class java.lang.InterruptedException

36 -------------------------------------------------------------------

37 getMethods()获得的方法的名字是:wait

38 getMethods()获得的参数的类型是long

39 getMethods()获得的方法的返回值的类型void

40 getMethods()获得的方法的修饰符有public final native

41 getMethods()获得的方法的异常类型是:class java.lang.InterruptedException

42 -------------------------------------------------------------------

43 getMethods()获得的方法的名字是:hashCode

44 getMethods()获得的方法的返回值的类型int

45 getMethods()获得的方法的修饰符有public native

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

47 getMethods()获得的方法的名字是:getClass

48 getMethods()获得的方法的返回值的类型class java.lang.Class

49 getMethods()获得的方法的修饰符有public final native

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

51 getMethods()获得的方法的名字是:equals

52 getMethods()获得的参数的类型是class java.lang.Object

53 getMethods()获得的方法的返回值的类型boolean

54 getMethods()获得的方法的修饰符有public

55 -------------------------------------------------------------------

56 getMethods()获得的方法的名字是:toString

57 getMethods()获得的方法的返回值的类型class java.lang.String

58 getMethods()获得的方法的修饰符有public

59 -------------------------------------------------------------------

60 getMethods()获得的方法的名字是:notify

61 getMethods()获得的方法的返回值的类型void

62 getMethods()获得的方法的修饰符有public final native

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

64 getMethods()获得的方法的名字是:notifyAll

65 getMethods()获得的方法的返回值的类型void

66 getMethods()获得的方法的修饰符有public final native

67 -------------------------------------------------------------------
View Code

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

二、javaLinkedList

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

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

  • LinkList.java实现对LinkedList类中方法的重写定义,这样就可以方便的使用自己定义的方法名对LinkedList进行操作,逻辑结构也就更加清晰一些了。
  •  LinkListInfo.java数据封转
  • StorageTest,.java实现存储数据
  • MainTest.java测试代码,取数

     2.代码

  • LinkList.java
 1 package linkedlisttest;

 2 

 3 import java.util.LinkedList;

 4 import java.util.List;

 5 

 6 /**

 7  * @author XT

 8  * 定义List

 9  *

10  */

11 

12 public class LinkList 

13 {  

14     private static LinkedList <LinkListInfo> linklist = new LinkedList<LinkListInfo>();

15     

16     public static void addToList(LinkListInfo displayinfo){

17         linklist.add(displayinfo);

18     }

19     

20     public static void addFistToList(LinkListInfo displayinfo){

21         linklist.addFirst(displayinfo);

22     }

23     

24     public static void addLastToList(LinkListInfo displayinfo){

25         linklist.addLast(displayinfo);

26     }

27     

28     public static void removeFistToList(){

29         linklist.removeFirst();

30     }

31     

32     public static void removeLastToList(){

33         linklist.removeLast();

34     }

35     

36     public static List getList(){

37         return linklist;

38     }

39 }
View Code
  • LinkListInfo.java
 1 package linkedlisttest;

 2 

 3 public class LinkListInfo {

 4     

 5     private String IdName;

 6     private int IdNum;

 7     

 8     public String getIdName() {

 9         return IdName;

10     }

11     

12     public void setIdName(String idName) {

13         IdName = idName;

14     }

15     

16     public int getIdNum() {

17         return IdNum;

18     }

19     

20     public void setIdNum(int idNum) {

21         IdNum = idNum;

22     }

23 }
View Code
  • StorageTest,.java
 1 package linkedlisttest;

 2 

 3 public class StorageTest 

 4 {

 5     public void storageTest (){     

 6          for(int i=0;i<10;i++){

 7              LinkListInfo linklistinfo = new LinkListInfo();

 8              linklistinfo.setIdName("帅哥"+i);

 9              linklistinfo.setIdNum(i);

10              LinkList.addToList(linklistinfo);//静态方法类可以直接使用

11          }

12     }

13     

14 }
View Code
  •  MainTest.java
 1 package linkedlisttest;

 2 

 3 import java.util.List;

 4 

 5 public class MainTest {

 6   public static void main(String[] args){ 

 7     StorageTest storagetest = new StorageTest();

 8     storagetest.storageTest();

 9     List<LinkListInfo>  linklistinfo = LinkList.getList();

10     for(int i=0;i<linklistinfo.size();i++){

11       System.out.println(linklistinfo.get(i).getIdName());

12       System.out.println(linklistinfo.get(i).getIdNum());

13       System.out.println("..........");

14     } 

15   }

16 }
View Code

   3.结果

 1 帅哥0

 2 0

 3 ..........

 4 帅哥1

 5 1

 6 ..........

 7 帅哥2

 8 2

 9 ..........

10 帅哥3

11 3

12 ..........

13 帅哥4

14 4

15 ..........

16 帅哥5

17 5

18 ..........

19 帅哥6

20 6

21 ..........

22 帅哥7

23 7

24 ..........

25 帅哥8

26 8

27 ..........

28 帅哥9

29 9

30 ..........
View Code

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

【后面的话】

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

      分享:

      社交网络≠阅读

      阅读≠学习

      学习≠生产

      生产≠影响力

 

——TT

你可能感兴趣的:(LinkedList)