java学习(1) ----getMethod()和getDeclaredMethod()的区别(转)
转自: https://blog.csdn.net/qq_36443736/article/details/82890011
getMethod():获取自身能用所有的public公共方法。1.类本身的public 2.继承父类的public 3.实现接口的public
getDeclaredMethod():获取类自身声明的所有方法,包含public、protected和private方法。。
getMethod()获取继承父类的public方法举例:
public class Father { public Father() {
System.out.println("调用了父类构造方法");
} public void fatherSay() {
System.out.println("我是爸爸");
}
} public class Son extends Father { public Son() { // TODO Auto-generated constructor stub
System.out.println("调用了子类构造方法");
} public void sonSay() {
System.out.println("我是儿子");
}
public static void main(String[] args) {
Son son=new Son();
son.fatherSay();
}
}
测试类:
public class test1 { public static void main(String[] args) {
Class clazz=Son.class;
try {
//报错 NoSuchMethodException
Method method =clazz.getDeclaredMethod("fatherSay");
method.invoke(clazz.newInstance()); //运行结果:
//调用了父类构造方法
//调用了子类构造方法
//我是爸爸
Method method2 =clazz.getMethod("fatherSay");
method2.invoke(clazz.newInstance()); } catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
java.lang.Class.getDeclaredMethod()方法用法
http://www.itkeyword.com/doc/7856500677696294646/java-method-getDeclaredMethodlang
注:方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。
描述
java.lang.Class.getDeclaredMethod()方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。
name 参数是一个字符串,指定所需的方法的简单名称,
parameterTypes 参数是一个数组的Class对象识别方法的形参类型,在声明的顺序
声明
public Method getDeclaredMethod(String name, Class... parameterTypes) throws NoSuchMethodException,SecurityException
参数
name -- 方法的名称
parameterTypes -- 参数数组
返回值
匹配指定名称和参数的类的方法,此方法返回的Method对象
异常
NoSuchMethodException -- 如果匹配方法未找到
NullPointerException -- 如果name 为 null.
SecurityException -- If a security manager, s, is present.
实例
如何使用java.lang.Class.getDeclaredMethod()方法
package com.app.ui; import java.lang.reflect.*; public class ClassDemo { public static void main(String[] args) { ClassDemo cls = new ClassDemo();
Class c = cls.getClass(); try {
// parameter type is null
Method m = c.getDeclaredMethod("show", null);
System.out.println("method = " + m.toString()); // method Integer
Class[] cArg = new Class[1]
cArg[0] = Integer.class;
Method lMethod = c.getDeclaredMethod("showInteger", cArg);
System.out.println("method = " + lMethod.toString()); }catch(NoSuchMethodException e){
System.out.println(e.toString());
}
} private Integer show() {
return 1;
} public void showInteger(Integer i) {
this.i = i;
}
public int i = 78655;
}
编译和运行程序,产生以下结果:
method = private java.lang.Integer ClassDemo.show()
method = public void ClassDemo.showInteger(java.lang.Integer) invoke调用类中的方法,最简单的用法是可以把方法参数化
invoke(class, method)
比如你Test类里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue
java学习(1) ----getMethod()和getDeclaredMethod()的区别(转)的更多相关文章
- Java学习笔记--Collection和Collections的区别
转自 http://pengcqu.iteye.com/blog/492196 比较Collection 和Collections的区别. 1.java.util.Collection 是一个集合 ...
- 【转】Java学习---内存泄露与溢出的区别
Java内存泄露与溢出的区别 Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽): 而Java内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于 ...
- Java学习|Exception和Error有什么区别?
典型回答: Exception和Error都继承了Throwable类,java中只有Throwable类型的实例才能被Throw(抛出)或者catch(捕获). Exceptio ...
- Java学习之==>int和Integer的区别和联系
一.区别 1.类型 int是java中原始八种基本数据类型之一: Integer是一个类,包装整型提供了很多日常的操作: 2.存储位置和大小 int是由jvm底层提供,由Java虚拟机规范,int型数 ...
- Java学习之Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...
- Java学习之栈和堆的区别
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...
- Java学习:注解,反射,动态编译
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解 什么是注解 ? Annotat ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- Java学习——反射
Java学习——反射 摘要:本文主要讲述了什么是反射,使用反射有什么好处,以及如何使用反射. 部分内容来自以下博客: https://www.cnblogs.com/tech-bird/p/35253 ...
随机推荐
- robot:截图关键字
参考: https://www.cnblogs.com/hong-fithing/p/9656221.html--python https://blog.csdn.net/weixin_4315628 ...
- MySQL 过滤复制+复制映射 配置方法
场景 node1 和 node2 为两台不同业务的MySQL服务器.业务方有个需求,需要将node1上的 employees库的departments .dept_manager 这2张表同步到 no ...
- Ansible安装配置及命令使用详解
Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...
- [SQL] - 报表查询效率优化
背景 系统将数据对象JSON序列化后存放到数据库字段中.Report 模块需要获取实时数据对象数值,当前在SQL中进行数值判断的耗时长,效率低. 分析 当前执行效率低主要是程序结构设计的不合理. SQ ...
- 算法两数之和 python版
方法一.暴力解法 -- 5s 复杂度分析:时间复杂度:O(n^2)空间复杂度:O(1) length = len(nums)for i in range(length): for j in ra ...
- Python进阶: Decorator 装饰器你太美
函数 -> 装饰器 函数的4个核心概念 1.函数可以赋与变量 def func(message): print('Got a message: {}'.format(message)) send ...
- vue的生命周期 created mounted等
生命周期: beforeCreate 在实例初始化之后,数据观测和event/watcher时间配置之前被调用 created 页面加载之前执行,在实例创建完成后被立即调用.执行顺序:父组件-子组件 ...
- Scratch编程:游来游去的鱼(二)
“ Scratch编程学习环境搭建好了吗?让我们一起来进行游戏吧!” 01 — 游戏介绍 这是一款简单的小游戏,实现了一条小鱼在池塘里游来游去. 02 — 设计思路 1,这个游戏主要由一个池塘背景和一 ...
- linux学习之路(一)--centos7安装JDK
一.卸载centos自带jdk 1.rpm -qa | grep java 查看包含“java”关键字的安装包. 2.然后通过 rpm -e --nodeps 后面跟系统自带的jdk名 ...
- [Luogu5320][BJOI2019]堪破神机(DP+斯特林数)
https://www.cnblogs.com/cjyyb/p/10747543.html 特征方程+斯特林反演化简式子,要注意在模998244353意义下5没有二次剩余,所以每个数都要用$a+b\s ...