getMethods getDeclaredMethods区别
来源:互联网 发布:有深度的动漫 知乎 编辑:程序博客网 时间:2024/06/10 08:46
个人理解如下:
public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法。
public Method[] getDeclaredMethods()返回自身类的所有公用(public)方法包括私有(private)方法,但包括其继承类的方法,当然也包括它所实现接口的方法。
如下:
Car类实现该接口
Truck继承Car类
最后还有:
运行结果如下:
Car 的默认构造函数正在运行。。。
Truck 的默认构造函数正在运行。。。
getDeclaredMethods方法(只显示当前类的方法,但包括私有方法):
方法名称 introduce
方法名称 setCapacity
方法名称 getPower
方法名称 getDriver
方法名称 setDriver
getMethods方法(显示其继承类的方法,但不包括私有方法getDriver):
方法名称 introduce
方法名称 setCapacity
方法名称 getPower
方法名称 setBrand
方法名称 setMaxSpeed
方法名称 getBrand
方法名称 getMaxSpeed
方法名称 setColor
方法名称 getColor
方法名称 hashCode
方法名称 getClass
方法名称 wait
方法名称 wait
方法名称 wait
方法名称 equals
方法名称 toString
方法名称 notify
方法名称 notifyAll
Process finished with exit code 0
其他相关类:
public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法。
public Method[] getDeclaredMethods()返回自身类的所有公用(public)方法包括私有(private)方法,但包括其继承类的方法,当然也包括它所实现接口的方法。
如下:
package zhuhaifeng.pojo;
public interface IEngine {
/**
* 引擎的马力
* @return
*/
public int getPower();
}
public interface IEngine {
/**
* 引擎的马力
* @return
*/
public int getPower();
}
package zhuhaifeng.pojo;
public class Car implements IEngine {
private String driver;
protected String brand;
protected String color;
protected int maxSpeed;
public Car() {
System.out.println("Car 的默认构造函数正在运行。。。");
}
/**
* 汽车介绍
*/
public void introduce() {
System.out.println(" the brand is :" + brand + "\n the color is : " + color + "\n the maxSpeed is :" + maxSpeed);
}
public int getPower() {
return 10;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
private String getDriver() {
return driver;
}
private void setDriver(String driver) {
this.driver = driver;
}
}
//其中getDriver,setDriver是私有的.
public class Car implements IEngine {
private String driver;
protected String brand;
protected String color;
protected int maxSpeed;
public Car() {
System.out.println("Car 的默认构造函数正在运行。。。");
}
/**
* 汽车介绍
*/
public void introduce() {
System.out.println(" the brand is :" + brand + "\n the color is : " + color + "\n the maxSpeed is :" + maxSpeed);
}
public int getPower() {
return 10;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
private String getDriver() {
return driver;
}
private void setDriver(String driver) {
this.driver = driver;
}
}
//其中getDriver,setDriver是私有的.
package zhuhaifeng.pojo;
import zhuhaifeng.pojo.Car;
public class Truck extends Car {
private String capacity; //载重
private String driver;
public void setCapacity(String capacity) {
this.capacity = capacity;
}
public Truck(){
System.out.println("Truck 的默认构造函数正在运行。。。");
}
/**
* 汽车介绍
*/
public void introduce(){
System.out.println("Truck :");
System.out.println(" the brand is :"+brand+ "\n the color is : "+color+"\n the maxSpeed is :"+maxSpeed);
}
public int getPower() {
return 100; //To change body of implemented methods use File | Settings | File Templates.
}
private String getDriver() {
return driver;
}
private void setDriver(String driver) {
this.driver = driver;
}
}
import zhuhaifeng.pojo.Car;
public class Truck extends Car {
private String capacity; //载重
private String driver;
public void setCapacity(String capacity) {
this.capacity = capacity;
}
public Truck(){
System.out.println("Truck 的默认构造函数正在运行。。。");
}
/**
* 汽车介绍
*/
public void introduce(){
System.out.println("Truck :");
System.out.println(" the brand is :"+brand+ "\n the color is : "+color+"\n the maxSpeed is :"+maxSpeed);
}
public int getPower() {
return 100; //To change body of implemented methods use File | Settings | File Templates.
}
private String getDriver() {
return driver;
}
private void setDriver(String driver) {
this.driver = driver;
}
}
package zhuhaifeng.reflect;
import zhuhaifeng.pojo.Truck;
import java.lang.reflect.Method;
public class MethodsDifferent {
public static void displayMethods(Class clazz) throws Throwable {
System.out.println("\ngetMethods方法: ");
Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
System.out.println("方法名称 " + method.getName());
// System.out.println("param type " + method.getParameterTypes().toString());
}
}
public static void displayDeclaredMethods(Class clazz) throws Throwable {
System.out.println("\ngetDeclaredMethods方法: ");
Method[] methods = clazz.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
System.out.println("方法名称 " + method.getName());
// System.out.println("param type " + method.getParameterTypes().toString());
}
}
public static void main(String[] args) throws Throwable {
Class clazz = ReflectDemo.loadClass("zhuhaifeng.pojo.Truck");
Truck truck = (Truck) ReflectDemo.initDefaultConstructor(clazz);
displayDeclaredMethods(clazz);
displayMethods(clazz);
}
}
import zhuhaifeng.pojo.Truck;
import java.lang.reflect.Method;
public class MethodsDifferent {
public static void displayMethods(Class clazz) throws Throwable {
System.out.println("\ngetMethods方法: ");
Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
System.out.println("方法名称 " + method.getName());
// System.out.println("param type " + method.getParameterTypes().toString());
}
}
public static void displayDeclaredMethods(Class clazz) throws Throwable {
System.out.println("\ngetDeclaredMethods方法: ");
Method[] methods = clazz.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
System.out.println("方法名称 " + method.getName());
// System.out.println("param type " + method.getParameterTypes().toString());
}
}
public static void main(String[] args) throws Throwable {
Class clazz = ReflectDemo.loadClass("zhuhaifeng.pojo.Truck");
Truck truck = (Truck) ReflectDemo.initDefaultConstructor(clazz);
displayDeclaredMethods(clazz);
displayMethods(clazz);
}
}
Car 的默认构造函数正在运行。。。
Truck 的默认构造函数正在运行。。。
getDeclaredMethods方法(只显示当前类的方法,但包括私有方法):
方法名称 introduce
方法名称 setCapacity
方法名称 getPower
方法名称 getDriver
方法名称 setDriver
getMethods方法(显示其继承类的方法,但不包括私有方法getDriver):
方法名称 introduce
方法名称 setCapacity
方法名称 getPower
方法名称 setBrand
方法名称 setMaxSpeed
方法名称 getBrand
方法名称 getMaxSpeed
方法名称 setColor
方法名称 getColor
方法名称 hashCode
方法名称 getClass
方法名称 wait
方法名称 wait
方法名称 wait
方法名称 equals
方法名称 toString
方法名称 notify
方法名称 notifyAll
Process finished with exit code 0
其他相关类:
package zhuhaifeng.reflect;
import zhuhaifeng.pojo.Car;
import zhuhaifeng.pojo.Truck;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* Created by IntelliJ IDEA.
* User: zhuhaifeng
* Date: 2008-10-18
* Time: 20:02:21
* To change this template use File | Settings | File Templates.
*/
public class ReflectDemo {
/**
* 通过类装载器装载类
*
* @param className
* @return
* @throws Throwable
*/
public static Class loadClass(String className) throws Throwable {
//类装载器
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass(className);
return clazz;
}
/**
* 通过初始化默认构造函数实例化对象
*
* @param clazz
* @return
* @throws Throwable
*/
public static Object initDefaultConstructor(Class clazz) throws Throwable {
// 获取类的默认构造器对象并通过它实例化Car
Constructor cons = clazz.getDeclaredConstructor((Class[]) null);
return cons.newInstance();
}
/**
* 初始化方法参数
*
* @param clazz
* @param obj
* @param methodName
* @param methodParam
* @throws Throwable
*/
public static void initMethodParam(Class clazz, Object obj, String methodName, Object methodParam) throws Throwable {
Method[] methods = clazz.getMethods();
//遍历方法
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
//判断方法名称是否相同
if (method.getName().equals(methodName)) {
method.invoke(obj, methodParam);
}
}
}
public static void main(String[] args) throws Throwable {
Class clazz = loadClass("zhuhaifeng.pojo.Truck");
Truck truck = (Truck) initDefaultConstructor(clazz);
initMethodParam(clazz, truck, "setBrand", "奥迪A6");
initMethodParam(clazz, truck, "setMaxSpeed", 30);
// displayMethod( clazz) ;
truck.introduce();
}
}
import zhuhaifeng.pojo.Car;
import zhuhaifeng.pojo.Truck;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* Created by IntelliJ IDEA.
* User: zhuhaifeng
* Date: 2008-10-18
* Time: 20:02:21
* To change this template use File | Settings | File Templates.
*/
public class ReflectDemo {
/**
* 通过类装载器装载类
*
* @param className
* @return
* @throws Throwable
*/
public static Class loadClass(String className) throws Throwable {
//类装载器
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass(className);
return clazz;
}
/**
* 通过初始化默认构造函数实例化对象
*
* @param clazz
* @return
* @throws Throwable
*/
public static Object initDefaultConstructor(Class clazz) throws Throwable {
// 获取类的默认构造器对象并通过它实例化Car
Constructor cons = clazz.getDeclaredConstructor((Class[]) null);
return cons.newInstance();
}
/**
* 初始化方法参数
*
* @param clazz
* @param obj
* @param methodName
* @param methodParam
* @throws Throwable
*/
public static void initMethodParam(Class clazz, Object obj, String methodName, Object methodParam) throws Throwable {
Method[] methods = clazz.getMethods();
//遍历方法
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
//判断方法名称是否相同
if (method.getName().equals(methodName)) {
method.invoke(obj, methodParam);
}
}
}
public static void main(String[] args) throws Throwable {
Class clazz = loadClass("zhuhaifeng.pojo.Truck");
Truck truck = (Truck) initDefaultConstructor(clazz);
initMethodParam(clazz, truck, "setBrand", "奥迪A6");
initMethodParam(clazz, truck, "setMaxSpeed", 30);
// displayMethod( clazz) ;
truck.introduce();
}
}
0 0
- getMethods getDeclaredMethods区别
- getMethods和getDeclaredMethods的区别
- 反射中getMethods 与 getDeclaredMethods 的区别
- 关于getDeclaredMethods与getMethods的的区别
- 反射中getMethods 与 getDeclaredMethods 的区别
- getFields()与getDeclaredFields()区别;getMethods()与getDeclaredMethods()区别
- java反射中getDeclaredMethods和getMethods的区别
- java反射中getDeclaredMethods和getMethods的区别
- 反射之getMethods()与getDeclaredMethods()
- getDeclaredFields,getFields,getDeclaredMethods,getMethods实例测试!
- 试用Java中的反射reflect之getDeclaredMethods和getMethods
- Java中的反射reflect之getDeclaredMethods和getMethods
- java 反射机制 之 getMethods获取所有公有方法 和 getDeclaredMethods 获取本类所有方法
- 反射中getMethods和getDelcaredMethod区别
- Class.getDeclaredMethods()疑惑
- java 反射 getDeclaredMethods 和 getMehtods
- c#反射中GetMethods()和GetCustomAttributes()方法
- getMethods、getMethod和invoke()方法的使用
- 1014
- 数据分析的能力体系和进阶路线
- 统计数字限时增长效果实现:------------简单有效版(配合JQ使用)
- php乱码问题解决
- Spark快速安装与部署运行
- getMethods getDeclaredMethods区别
- assets目录下apk的安装
- 1. Two Sum
- android 的@androi与?android区别
- WebRTC有前途吗?
- java浮点数比较
- 聘用合同与劳动合同的关系
- 选择排序
- Servlet3.0新特性使用详解