java 反射基础知识
java 反射 基础知识
- 反射:reflection
- 反射关键类
- java 反射部分应用
反射:reflection
- 在运行中分析类。
- 在运行中查看和操作对象。
- 基于反射自己创建对象。
- 调用不可以访问的方法。
- set或者get无法访问的成员变量。
- 反射构建出无法直接访问的类。
- 实现通用的数组操作代码。
- 类似函数指针的功能。
使用反射创建对象。
newInstance, 调用构造函数。
方法一:
public class A{public void hello(){System.out.println("I am inevitable");}
}
Object obj1 = Class.forName("A").newInstance();
Method m = Class.forName("A").getMethod("hello");
m.invoke(obj1);//第一句也可如下:
A obj2 = (A) Class.forName("A").newInstance();
方法二:
//获取构造函数
Constructor<A> constructor = A.class.getConstructor();
//使用构造函数创建对象
A obj3 = constructor.newInstance();
//对象调用方法
obj3.hello();
反射关键类
- Class:类型标识。
– 三种获取类型标识的方法:
//方法1:
String s1 = "abc";
Class c1 = s1.getClass();
System.out.println(c1.getName());//方法2:
Class c2 = Class.forName("java.lang.String");
System.out.println(c2.getName());//方法3:
Class c3 = String.class;
System.out.println(c3.getName());
– 成员变量,方法,构造函数,修饰符,父类,父接口,包。。。
各地有对应的方法去获取数据。
如:
Fields:成员变量。
getFields(); 获取本类和父类的所有public字段。
getDeclaredFields(); 获取本类所有声明的字段,包括private的。
Method:成员方法。
getMethod(); 获取本类和父类,父接口的所有public方法。
getDeclaredMethod(); 获取本类所有的方法,包括private。
Constructor:构造函数。
getConstructors(); 获取构造函数。
父类:
getSuperclass(); 获取父类。
父接口:
getInterfaces();
java 反射部分应用
- 数据库连接。
- 数组扩充:新建一个大数组,将原数组中内容拷贝过去。
int[] a = {1, 2, 3, 4, 5};
a = (int[])Copy(a, 10);
for(int i : a)System.out.println(i);public static Object Copy(Object oldArrays, int newLength){//获取原数组的类型标识
Class c = oldArrays.getClass();
//获取每个数组中每个元素的类型。
Class componentType = c.getComponentType();
//获取老数组的长度。
int oldLength = Array.getLength(oldArrays);
//创建新数组。
Object newArray = Array.newInstance(componentType, newLength);
//拷贝数据。
System.arraycopy(oldArrays, 0, newArray, 0, oldLength);
//返回新数组。
return newArray;
}
- 动态执行方法:给定类名称,方法名称,即可执行。
public class Worker{public static void hello(){System.out.println("Hello world!");}
}//其他类使用反射技术,动态的使用Worker类的hello方法。
public class myWork extends TimerTask{public void run()throws Exception{//静态方法无需,new对象。Method m = Class.forName("Worker").getClass().getMethod("hello");m.invoke(null);}
}
java 反射基础知识相关推荐
- Java基础知识第二讲:Java开发手册/JVM/集合框架/异常体系/Java反射/语法知识/Java IO
Java基础知识第二讲(Java编程规范/JVM/集合框架/异常体系/Java反射/语法知识/Java IO/码出高效) 分享在java学习及工作中,常使用的一些基础知识,本文从JVM出发,讲解了JV ...
- 你觉得什么才是 Java 的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- hashcode是什么意思_什么才是 Java 的基础知识?
作者:晓风轻 链接:zhuanlan.zhihu.com/p/28615617 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java ...
- Java SE 基础知识
Java SE 基础知识 1 2 @(Notes)[J2SE, Notes] VICTORY LOVES PREPARATION. 特别说明: 该文档在马克飞象查阅最佳: 本部分知识还在迭代中,欢迎补 ...
- 什么才是java的基础知识?
作者:晓风 出处:https://xwjie.github.io 关于资源视频下载的说明 常用设计模式完整系列篇 [强化编程功底]算法文摘 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都 ...
- java薄弱基础知识记录
java薄弱基础知识记录(一) 总结了我认为需做笔记的地方 基础知识 面向抽象编程 异常处理 反射 注解Annotation 泛型 集合 I/O 时间与日期 单元测试 正则表达式 安全和加密 多线程( ...
- Java进阶基础知识
Java进阶基础知识 1.Java 基础 Java类设计的原则就是内聚性,一致性和封装性是Java设计的基本原则 1.1 Java基础理论 Java基础理论知识 1.2继承的优缺点 1.2.1优点 : ...
- java培训基础知识都学哪些
很多人都开始学习java技术,觉得java语言在未来的发展前景空间非常大,事实却是如此,那么针对于零基础的同学, 学习java技术需要学哪些呢?下面我们就来看看java培训基础知识都学哪些? java ...
- 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc
计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...
最新文章
- 回归 好坏 机器学习_机器学习下的多元回归
- 一个蛮复杂的LINQ表达式
- VC++多线程工作笔记0001---认识与创建线程
- IE 中开发,兼容与性能测试工具汇总
- Latex排版技巧:上下方可输入文字的箭头
- 奇兔recovery卡刷教程_奇兔刷机小编为你详解recovery界面中的功能
- 小水智能-智慧工地与传统工地相比,数字科技赋予了以下三大优势
- java程序员修炼教学视频,快来看鸭~
- 【C++零散】计时chrono
- Android之页面添加水印
- 解决Windows11 Microsoft Store微软商店无法联网 Windows聚焦不更新 微软账户无法登录等
- 新概念英语(第四册,旧版)复习(原文及全文翻译)——Lesson 1 - Finding Fossil Man(寻找化石人)
- The Biggest Water Problem
- Python 最近两条好消息:①TIOBE排名超过C和Java②新版本发布3.10.0,还有今天刚发布的《What’s New in Python(2021.10.15)》
- 【IDEA】com.intellij.openapi.project.IndexNotReadyException
- BJDCTF 2nd WEB
- 3Ds Max快速入门(一)
- 常见可控硅带驱动 光耦 三极管 电阻三种方式
- vue3 draggable拖拽
- js中取一个对象的部分属性