转自: 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()的区别(转)的更多相关文章

  1. Java学习笔记--Collection和Collections的区别

    转自 http://pengcqu.iteye.com/blog/492196 比较Collection 和Collections的区别.   1.java.util.Collection 是一个集合 ...

  2. 【转】Java学习---内存泄露与溢出的区别

    Java内存泄露与溢出的区别 Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽): 而Java内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于 ...

  3. Java学习|Exception和Error有什么区别?

    典型回答:      Exception和Error都继承了Throwable类,java中只有Throwable类型的实例才能被Throw(抛出)或者catch(捕获).      Exceptio ...

  4. Java学习之==>int和Integer的区别和联系

    一.区别 1.类型 int是java中原始八种基本数据类型之一: Integer是一个类,包装整型提供了很多日常的操作: 2.存储位置和大小 int是由jvm底层提供,由Java虚拟机规范,int型数 ...

  5. Java学习之Comparable与Comparator的区别

    Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...

  6. Java学习之栈和堆的区别

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...

  7. Java学习:注解,反射,动态编译

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解  什么是注解 ? Annotat ...

  8. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  9. Java学习——反射

    Java学习——反射 摘要:本文主要讲述了什么是反射,使用反射有什么好处,以及如何使用反射. 部分内容来自以下博客: https://www.cnblogs.com/tech-bird/p/35253 ...

随机推荐

  1. php设计模式;抽象类、抽象方法

    设计模式 什么叫设计模式 所谓设计模式,就是一些解决问题的“常规做法”,是一种认为较好的经验总结.面对不同的问题,可能会有不同的解决办法,此时就可以称为不同的设计模式. 工厂模式 在实际应用中,我们总 ...

  2. C++ 特性之 lambda

    "我扑到书籍上,就像饥饿的人扑在面包上"-- 高尔基 简而言之,Lambda 表达式就是用于创建匿名函数的. 或许,Lambda 表达式算得上是 C++ 11 新增特性中最激动人心 ...

  3. 《Mysql - 在Mysql服务出现瓶颈时,有哪些“饮鸩止渴”提高性能的方法?》

    一:情景 - 业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内.临时性地提升一些性能. - 在业务高发时候,Mysql 服务压力过大,导致业务受损, 用户的开发负责人说,不管你用 ...

  4. PAT(A) 1144 The Missing Number(C)统计

    题目链接:1144 The Missing Number (20 point(s)) Description Given N integers, you are supposed to find th ...

  5. Python开发【第一章】:简介和入门

    Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...

  6. S04_CH03_QSPI烧写LINUX系统

    S04_CH03_QSPI烧写LINUX系统 3.1概述 3.2搭建硬件系统 本章硬件工程还是使用<S04_CH01_搭建工程移植LINUX/测试EMMC/VGA>所搭建的VIVADO工程 ...

  7. PB之取下来列修改后的值(AcceptText)

    AcceptText()功能 将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中).在将数据放入到当前项之前,编辑框中的数据必须通过有效性规则检查语法  dwcontrol. ...

  8. C/C++ cmake example

    学习 Golang,有时需要 Cgo,所以需要学习 C.C++. 语言入门: https://item.jd.com/12580612.html https://item.jd.com/2832653 ...

  9. Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念

    Topic 一类消息的集合,RocketMQ的基本订阅单位 部署结构 Name Server Name Server 为 producer 和 consumer 提供路由信息. 相对来说,namese ...

  10. python之(urllib、urllib2、lxml、Selenium+PhantomJS)爬虫

    一.最近在学习网络爬虫的东西,说实话,没有怎么写过爬虫,Java里面使用的爬虫也没有怎么用过.这里主要是学习Python的时候,了解到Python爬虫的强大,和代码的简介,这里会简单的从入门看是说起, ...