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

原文地址:https://www.cnblogs.com/xt0810/p/3545686.html