【前面的话】
在实际项目中学习知识总是最快和最有效的,既能够较好的掌握知识,又能够做出点东西,还是简单的知识总结,最近一直在总结笔记,写的东西还是比较水,希望慢慢可以写出一些干货。
学习过程中的小知识点总结,基础文章,选择阅读。
【知识汇总】
一、 获取一个类中方法的详细信息
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 }
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 }
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 -------------------------------------------------------------------
========================我是2014年2月11日的分割线========================
二、java的LinkedList
项目中要使用到LinkedList,其实对于java来说这些结构都已经是写好了的,只需要去调用就可以了,开发就简单了好多。
1.代码结构:主要写了下面几个java文件,将对LinkedList的操作分开。
2.代码
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 }
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 }
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 }
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 }
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 ..........
========================我是2014年2月12日的分割线========================
【后面的话】
节后的生活有归于平静了,必须在接下来的日子学习到更多,不要着急,一点一点来。
分享:
社交网络≠阅读
阅读≠学习
学习≠生产
生产≠影响力
——TT