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日的分割线========================
二、java的LinkedList
项目中要使用到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
Java学习笔记(七)——获取类中方法的信息,java的LinkedList的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- 浅谈Java反射机制 之 获取类的 方法 和 属性(包括构造函数)
上一篇 获取 类 的字节码文件 我们讲到了获取类的字节码文件的三种方法 第三种方法通过getClass("全路径名")获取字节码文件最符合要求 1.获取构造方法 先贴上我们要获取的 ...
- Java反射机制 之 获取类的 方法 和 属性(包括构造函数)(Day_06)
把自己立成帆,才能招来凤. 运行环境 JDK8 + IntelliJ IDEA 2018.3 本文中使用的jar包链接 https://files.cnblogs.com/files/papercy ...
- 1.9(java学习笔记)object类及toString()与equals()方法
object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...
- Java泛型学习笔记 - (七)浅析泛型中通配符的使用
一.基本概念:在学习Java泛型的过程中, 通配符是较难理解的一部分. 主要有以下三类:1. 无边界的通配符(Unbounded Wildcards), 就是<?>, 比如List< ...
- Java学习笔记--继承和多态(中)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java分享笔记:File类中常用方法的介绍
java.io包下的File类用于描述和创建一个文件或文件夹对象,只能对文件或文件夹做一些简单操作,不能修改文件的内容,功能比较有限.下面是对于File类中常用方法的程序演示. [1] 演示程序一 p ...
随机推荐
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- Machine Learning CodeForces - 940F (带修改的莫队)
You come home and fell some unpleasant smell. Where is it coming from? You are given an array a. You ...
- CMDB资产管理系统开发【day27】:cmdb API安全认证
1.API验证分析 API三关验证 客户端和服务端中都存放一份相同的随机字符串,客户端发请求的时候把随机字符串和当前时间进行MD5加密,同时带着当前时间通过请求头发送到API,进入三关验证. 第一关是 ...
- wamp环境介绍
一.简介 Wamp就是 Windows Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件. 二.常用的集成环境 XAMPP - XAMPP ...
- gulp压缩css和js
压缩 css 代码可降低 css 文件大小,提高页面打开速度. 规律转换为 gulp 代码 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下.一. ...
- VUE 内置的标签<keep-alive></keep-alive>作用
<keep-alive></keep-alive> 的作用是 包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染组件
- 在centos中使用rpm安装包安装jenkins
jenkins下载:http://pkg.jenkins-ci.org/redhat/ 下载rpm包到本地 在linux下使用rpm包安装命令: sudo rpm -ih jenkins-1.562- ...
- spring怎么实现单例模式?
Spring学习之路——单例模式和多例模式 在Spring中,bean可以被定义为两种模式:prototype(多例)和singleton(单例) singleton(单例):只有一个共享的实例存 ...
- js监听浏览器后退事件
$(document).ready(function(e) { var counter = 0; if (window.history && ...
- perl6 修改文件并覆盖
use v6; my $filename = 'data.txt'; my $data = slurp $filename; say $data; $data ~~ s/'4'/'ABC'/; say ...