//简单的例子
public class ReflextionMain {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException, NoSuchMethodException { EqualsMain refOne = new EqualsMain();//类全称为: equals.EqualsMain
System.out.println(refOne.getClass().getName());//equals.EqualsMain
System.out.println(EqualsMain.class.getName());//equals.EqualsMain
System.out.println(EqualsMain.class.getPackage().getName());//equals /**
* 对应的类
*/
Class<?> classOne = Class.forName("equals.EqualsMain");
System.out.println(classOne.getName());//equals.EqualsMain EqualsMain equOne = (EqualsMain) classOne.newInstance();
equOne.setId("5");
System.out.println(equOne.getId());//5 /**
* 所有的构造函数
*/
Constructor<?>[] constructors = classOne.getConstructors();
EqualsMain equTwo = (EqualsMain) constructors[0].newInstance("123");
EqualsMain equThree = (EqualsMain) constructors[1].newInstance(); System.out.println(equTwo.getId() + "|||" + equThree.getId());//123|||null System.out.println(classOne.getClassLoader().getClass().getName());//sun.misc.Launcher$AppClassLoader /**
* 名称为id的字段
*/
Field fieldOne = classOne.getDeclaredField("id");
fieldOne.setAccessible(true);
fieldOne.set(equOne, "456");
System.out.println(fieldOne.get(equOne));//456 /**
* 父类
*/
Class<?> superClass = classOne.getSuperclass();
System.out.println(superClass.getName());//java.lang.Object /**
* 包含的字段
*/
Field[] fields = classOne.getDeclaredFields();
for (Field field : fields){
System.out.println(field);//private java.lang.String equals.EqualsMain.id
} /**
* 包含的方法
*/
Method[] methods = classOne.getDeclaredMethods();
/**
* 打印内容如下:
* public static void equals.EqualsMain.main(java.lang.String[])
* main
* void
* 9
* [java.lang.String[] arg0]
* public boolean equals.EqualsMain.equals(java.lang.Object)
* equals
* boolean
* 1
* [java.lang.Object arg0]
* public int equals.EqualsMain.hashCode()
* hashCode
* int
* 1
* []
* public java.lang.String equals.EqualsMain.getId()
* getId
* class java.lang.String
* 1
* []
* public void equals.EqualsMain.setId(java.lang.String)
* setId
* void
* 1
* [java.lang.String arg0]
*/
for (Method method : methods){
System.out.println(method);//函数代码写法
System.out.println(method.getName());//函数名
System.out.println(method.getReturnType());//函数返回类型
System.out.println(method.getModifiers());//函数访问修饰符
System.out.println(Arrays.toString(method.getParameters()));//函数参数
} /**
* 实现的接口
*/
Class<?>[] interfaces = classOne.getInterfaces();
for (Class clazz : interfaces){
System.out.println(clazz);//interface java.io.Serializable
} /**
* 打印内容如下:
* map中的数据
* ----------------------
*/
Method methodMain = classOne.getMethod("main", java.lang.String[].class);
methodMain.invoke(classOne.newInstance(), (Object) new String[]{"999"});
}
}
public class EqualsMain implements Serializable {
private String id; public EqualsMain(String id){
this.id = id;
} public EqualsMain(){}; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} @Override
public int hashCode() {
return id.hashCode();
} @Override
public boolean equals(Object obj) {
if (null == obj) return false;
if (this.id.equals(((EqualsMain)obj).getId())){
return true;
}else {
return false;
}
} public static void main(String[] args){
EqualsMain equalsMain1 = new EqualsMain("10");
EqualsMain equalsMain2 = new EqualsMain("20");
EqualsMain equalsMain3 = new EqualsMain("10"); Map<Object , String> map = new HashMap<>();
map.put(equalsMain1, "map中的数据");
System.out.println(map.get(equalsMain3));
System.out.println("----------------------");
}
}

Java反射使用方法的更多相关文章

  1. 通过Java反射调用方法

    这是个测试用的例子,通过反射调用对象的方法.     TestRef.java import java.lang.reflect.Method; import java.lang.reflect.In ...

  2. 深入解析Java反射-invoke方法

    博客原文:http://www.sczyh30.com/posts/Java/java-reflection-2/ 上篇文章中回顾了一下Java反射相关的基础内容.这一节我们来深入研究Method类中 ...

  3. JAVA反射调用方法

    1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotation.SetTable ...

  4. 解析Java反射 - invoke方法

    最近工作中涉及到获取同程火车票,大概描述为:将本地获取的发出城市,目的城市及出发时间按固定格式封装,调用接口获取可乘坐座席等级最高的火车票,接口返回数据用包含三层类封装的类接受,接受的类总共为四层,倒 ...

  5. Java反射之方法反射demo

    package reflect; import java.lang.reflect.Method; public class ClassDemo3 { public static void main( ...

  6. Java 反射调用方法 - 不跳过安全检查、跳过安全检查和普通方法性能比较测试

    java中反射提供灵活性同时,给运行效率带来了一定影响.写个代码测试一下 package com.xzlf.reflectTest; import java.lang.reflect.Method; ...

  7. java反射拼接方法名动态执行方法

    近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的. code的值有很多个,自己又不想做ifelse或者s ...

  8. Java反射桥接方法解析

    在阅读mybaits源码的反射模块时,看到了如下的一段代码: /** * 添加 Method 数组到 uniqueMethods * @param uniqueMethods * @param met ...

  9. java反射-获取方法信息

    例子代码如下: package com.reflect; import java.lang.reflect.Method; public class ClassUtill { /* * 打印类的信息, ...

随机推荐

  1. MySQL数据操作与查询笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...

  2. HTML网页设计基础笔记 • 【第8章 页面布局与规划】

    全部章节   >>>> 本章目录 8.1 表格布局 8.1.1 表格布局 8.2 流式布局 8.2.1 瀑布流布局 8.2.2 masonry 实现瀑布流布局 8.3 div ...

  3. 大厂必问的Spring面试题

    准备了一个月的八股文,经历了二十几场秋招面试之后,发现Spring很受面试官青睐.最近有空将Spring常见的面试题总结了一下,希望对大家有所帮助. 文章目录: Spring的优点 Spring 用到 ...

  4. centos6.5-Apache优化

    Apache的网页压缩功能 一.配置网页压缩功能 在配置压缩功能以前访问网页的响应头部 Response Headers view source Accept-Ranges:bytes Connect ...

  5. js 简单版发布留言 案例

    <!DOCTYPE html>   <html lang="en">   <head>       <meta charset=" ...

  6. Springboot+Javamail实现邮件发送

    Springboot+Javamail实现邮件发送 使用的是spring-context-support-5.2.6.RELEASE.jar里的javamail javamail 官方文档:javam ...

  7. centos7 date时间命令

    date "+%F %T" %F     full date; same as %Y-%m-%d  --相当于年月日格式 %T     time; same as %H:%M:%S ...

  8. 日志通过脚本导入到HDFS当中

    可以关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) 利用shell脚本定时备份日志数据到HDFS上(适合日志数据比较少的时候) 时间命令 d ...

  9. Windows 10 安装 Git 与初次运行前的配置

    Windows 10 安装 Git 与初次运行前的配置 在 Windows 上安装 初次运行 Git 前的配置 用户信息 文本编辑器 检查配置信息 获取 Git 仓库 在现有目录中初始化仓库 克隆现有 ...

  10. 最新RabbitMQ安装指南2021.07

    一.RabbitMQ入门及安装 1.入门及安装 01 概述 简单概述: RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消 ...