zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    实验8 SQLite数据库操作
    实验7 BindService模拟通信
    实验6 在应用程序中播放音频和视频
    实验6 在应用程序中播放音频和视频
    实验5 数独游戏界面设计
    实验4 颜色、字符串资源的使用
    实验五存储管理实验
    实验四:主存空间的分配和回收
    实验三 进程调度模拟程序
    实验8 SQLite数据库操作
  • 原文地址:https://www.cnblogs.com/xt0810/p/3545686.html
Copyright © 2011-2022 走看看