invoke反射
mark一下使用用法,原理以后在搞:
无参数:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.reflect.Method; public class Test { public static void main(String[] args) throws Exception {
Method animalMethod = Animal.class.getDeclaredMethod("print");
Method catMethod = Cat.class.getDeclaredMethod("print"); Animal animal = new Animal();
Cat cat = new Cat();
animalMethod.invoke(cat);
animalMethod.invoke(animal); catMethod.invoke(cat);
// catMethod.invoke(animal);
} } class Animal { public void print() {
System.out.println("Animal.print()");
}
} class Cat extends Animal { @Override
public void print() {
System.out.println("Cat.print()");
}
}
输出:
Cat.print()
Animal.print()
Cat.print()
一个参数:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.reflect.Method; public class Test { public static void main(String[] args) throws Exception {
Method animalMethod = Animal.class.getDeclaredMethod("print",String.class);
Method catMethod = Cat.class.getDeclaredMethod("print", String.class); Animal animal = new Animal();
Cat cat = new Cat();
animalMethod.invoke(cat, "a"); // 继承可以由上往下
animalMethod.invoke(animal, "b"); catMethod.invoke(cat,"c");
// catMethod.invoke(animal, "d"); // 由下往上会报错
} } class Animal { public void print(String s) {
System.out.printf("Animal.print() --%s\n", s);
} } class Cat extends Animal { @Override
public void print(String s) {
System.out.printf("Cat.print() --%s\n", s);
} }
输出:
Cat.print() --a
Animal.print() --b
Cat.print() --c
invoke反射的更多相关文章
- method.invoke(...)反射点
import java.lang.reflect.Method; import java.util.Arrays; /** * @Author: hoobey * @Description: * @D ...
- java 基础之 反射技术
1. java代码 在 java 语言中最核心的就是代码的运行, 按照面向对象的思想,在调用java代码时往往需要先创建对象,再调用方法, 而写在方法中的即所谓的java 代码 一段java代码在程序 ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- 深入理解java反射原理
反射是java的一个特性,这一特性也使得它给了广大的第三方框架和开发过者很大的想像空间. 通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,从而使代码更灵活!可以极大地提 ...
- 年底Android面试整理(附答案)
面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二.以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期, ...
- 如何实现.net程序的进程注入
原文:如何实现.net程序的进程注入 如何实现.net程序的进程注入 周银辉 进程注入比较常见,比如用IDE调试程序以及一些Sp ...
- javaweb笔记全套
Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace 选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Pr ...
- javaweb笔记分享
Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace 选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Pr ...
- Apache Commons Collections 反序列化详细分析学习总结
0x01.环境准备: Apache Commons Collections 3.1版本,下载链接参考: https://www.secfree.com/a/231.html jd jui地址(将jar ...
随机推荐
- 字节跳动后端开发实习生面试(Python)
一面: 1.自我介绍. 2.介绍“工大小美”项目相关. 3.Python中的GIL(全局解释器锁),以及哪种情况下使用python的多线程性能有较大的提升. 4.项目中用到了SQLite数据库,如果有 ...
- redis cluster 配置
#服务器192.168.56.111 192.168.56.112 192.168.56.113 计划1主2从 192.168.56.111 192.168.56.112 192.168.56.1 ...
- python爬虫用到的一些东西
原装requests >>> import requests >>> response = requests.get('http://www.baidu.com') ...
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
========================================================================================== 一.基础介绍 == ...
- MySQL使用yum安装
1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2.安装mysql-comm ...
- HBase0.94.2-cdh4.2.0需求评估测试报告1.0之一
hbase是bigtable的开源山寨版本.是建立的hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的r ...
- IAR调试时出现IAR one or more breakpoints could not be set and have been disabled的解决办法
问题:在IAR调试时,单步执行的时候绿色箭头一直指向汇编界面,不指向C语言界面,并且不能在C语言界面设置断点,以及在代码编辑界面,设置断点,点调试时总提示IAR one or more breakpo ...
- Java技术——Java泛型详解
.为什么需要泛型 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52230032 泛型在Java中有很重要的地位,网上很多文章罗列各种 ...
- Java学习——面对对象的思想入门
本文是看过<head first Java>之后的一点感悟,写点东西帮忙以后回忆,Java目前在我的工作中用到还不多,而我又对面对对象的编程非常的感兴趣.曾经在MFC平台上写过 ...
- studio rendering problems
问题--------> Rendering Problems The following classes could not be instantiated: - android.support ...