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

 import java.lang.reflect.Method;
import java.lang.reflect.Modifier; public class ModifiersText {
public static void main(String[] args) throws Exception {
Class c=Class.forName("Test");
//-------------------获取方法的详细信息
//-------------------测试函数getDeclaredMethods()
Method m[]=c.getDeclaredMethods(); for(int i=0;i<m.length;i++)
{
//--------------------获得方法的名字
System.out.println("getDeclaredMethods()获得的方法的名字是:"+m[i].getName()); //--------------------获得方法参数的类型和有几个参数
Class b[]=m[i].getParameterTypes();//获得所有的参数并且存放到数组B中
for(int j=0;j<b.length;j++){
System.out.println("getDeclaredMethods()获得的参数的类型是"+b[j]);
} //--------------------获得方法返回值的类型
System.out.println("getDeclaredMethods()获得的方法的返回值的类型"+m[i].getReturnType());//获得方法的返回值类型 //--------------------获得方法的修饰符
int mod=m[i].getModifiers();
System.out.println("getDeclaredMethods()获得的方法的修饰符有"+Modifier.toString(mod)); //--------------------获得方法的异常类型
Class e[]=m[i].getExceptionTypes();//获得所有的异常类型存放到数组e中
for(int k=0;k<e.length;k++){
System.out.println("getDeclaredMethods()获得的方法的异常类型是:"+e[k]);
} System.out.println("-------------------------------------------------------------------");
} //-------------------获取方法的详细信息
//-------------------测试函数getMethods()
Method n[]=c.getMethods(); for(int i=0;i<n.length;i++)
{
//--------------------获得方法的名字
System.out.println("getMethods()获得的方法的名字是:"+n[i].getName()); //--------------------获得方法参数的类型和有几个参数
Class b1[]=n[i].getParameterTypes();//获得所有的参数并且存放到数组B中
for(int j=0;j<b1.length;j++){
System.out.println("getMethods()获得的参数的类型是"+b1[j]);
} //--------------------获得方法返回值的类型
System.out.println("getMethods()获得的方法的返回值的类型"+n[i].getReturnType());//获得方法的返回值类型 //--------------------获得方法的修饰符
int mod1=n[i].getModifiers();
System.out.println("getMethods()获得的方法的修饰符有"+Modifier.toString(mod1)); //--------------------获得方法的异常类型
Class e1[]=n[i].getExceptionTypes();//获得所有的异常类型存放到数组e中
for(int k=0;k<e1.length;k++){
System.out.println("getMethods()获得的方法的异常类型是:"+e1[k]);
} System.out.println("-------------------------------------------------------------------");
}
}
}

2)Test.java

 public class Test {
public void test1(String[] args) throws ClassNotFoundException {
} protected int test2(String[] args) throws ClassNotFoundException {
return 0;
}
private double test3(String[] args) throws ClassNotFoundException {
return 0;
}
}

5. 执行结果

 getDeclaredMethods()获得的方法的名字是:test1
getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;
getDeclaredMethods()获得的方法的返回值的类型void
getDeclaredMethods()获得的方法的修饰符有public
getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException
-------------------------------------------------------------------
getDeclaredMethods()获得的方法的名字是:test2
getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;
getDeclaredMethods()获得的方法的返回值的类型int
getDeclaredMethods()获得的方法的修饰符有protected
getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException
-------------------------------------------------------------------
getDeclaredMethods()获得的方法的名字是:test3
getDeclaredMethods()获得的参数的类型是class [Ljava.lang.String;
getDeclaredMethods()获得的方法的返回值的类型double
getDeclaredMethods()获得的方法的修饰符有private
getDeclaredMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException
-------------------------------------------------------------------
getMethods()获得的方法的名字是:test1
getMethods()获得的参数的类型是class [Ljava.lang.String;
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public
getMethods()获得的方法的异常类型是:class java.lang.ClassNotFoundException
-------------------------------------------------------------------
getMethods()获得的方法的名字是:wait
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public final
getMethods()获得的方法的异常类型是:class java.lang.InterruptedException
-------------------------------------------------------------------
getMethods()获得的方法的名字是:wait
getMethods()获得的参数的类型是long
getMethods()获得的参数的类型是int
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public final
getMethods()获得的方法的异常类型是:class java.lang.InterruptedException
-------------------------------------------------------------------
getMethods()获得的方法的名字是:wait
getMethods()获得的参数的类型是long
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public final native
getMethods()获得的方法的异常类型是:class java.lang.InterruptedException
-------------------------------------------------------------------
getMethods()获得的方法的名字是:hashCode
getMethods()获得的方法的返回值的类型int
getMethods()获得的方法的修饰符有public native
-------------------------------------------------------------------
getMethods()获得的方法的名字是:getClass
getMethods()获得的方法的返回值的类型class java.lang.Class
getMethods()获得的方法的修饰符有public final native
-------------------------------------------------------------------
getMethods()获得的方法的名字是:equals
getMethods()获得的参数的类型是class java.lang.Object
getMethods()获得的方法的返回值的类型boolean
getMethods()获得的方法的修饰符有public
-------------------------------------------------------------------
getMethods()获得的方法的名字是:toString
getMethods()获得的方法的返回值的类型class java.lang.String
getMethods()获得的方法的修饰符有public
-------------------------------------------------------------------
getMethods()获得的方法的名字是:notify
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public final native
-------------------------------------------------------------------
getMethods()获得的方法的名字是:notifyAll
getMethods()获得的方法的返回值的类型void
getMethods()获得的方法的修饰符有public final native
-------------------------------------------------------------------

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

二、javaLinkedList

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

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

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

2.代码

  • LinkList.java
 package linkedlisttest;

 import java.util.LinkedList;
import java.util.List; /**
* @author XT
* 定义List
*
*/ public class LinkList
{
private static LinkedList <LinkListInfo> linklist = new LinkedList<LinkListInfo>(); public static void addToList(LinkListInfo displayinfo){
linklist.add(displayinfo);
} public static void addFistToList(LinkListInfo displayinfo){
linklist.addFirst(displayinfo);
} public static void addLastToList(LinkListInfo displayinfo){
linklist.addLast(displayinfo);
} public static void removeFistToList(){
linklist.removeFirst();
} public static void removeLastToList(){
linklist.removeLast();
} public static List getList(){
return linklist;
}
}
  • LinkListInfo.java
 package linkedlisttest;

 public class LinkListInfo {

     private String IdName;
private int IdNum; public String getIdName() {
return IdName;
} public void setIdName(String idName) {
IdName = idName;
} public int getIdNum() {
return IdNum;
} public void setIdNum(int idNum) {
IdNum = idNum;
}
}
  • StorageTest,.java
 package linkedlisttest;

 public class StorageTest
{
public void storageTest (){
for(int i=0;i<10;i++){
LinkListInfo linklistinfo = new LinkListInfo();
linklistinfo.setIdName("帅哥"+i);
linklistinfo.setIdNum(i);
LinkList.addToList(linklistinfo);//静态方法类可以直接使用
}
} }
  • MainTest.java
 package linkedlisttest;

 import java.util.List;

 public class MainTest {
public static void main(String[] args){
StorageTest storagetest = new StorageTest();
storagetest.storageTest();
List<LinkListInfo> linklistinfo = LinkList.getList();
for(int i=0;i<linklistinfo.size();i++){
System.out.println(linklistinfo.get(i).getIdName());
System.out.println(linklistinfo.get(i).getIdNum());
System.out.println("..........");
}
}
}

3.结果

 帅哥0
0
..........
帅哥1
1
..........
帅哥2
2
..........
帅哥3
3
..........
帅哥4
4
..........
帅哥5
5
..........
帅哥6
6
..........
帅哥7
7
..........
帅哥8
8
..........
帅哥9
9
..........

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

【后面的话】

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

  分享:

社交网络≠阅读

阅读≠学习

学习≠生产

生产≠影响力

——TT

上一篇:痞子衡嵌入式:SEGGER J-Link仿真器硬件版本变迁


下一篇:OCP-1Z0-051-题目解析-第5题