Java 反射实例
实体类:User
package com.reflect.model; public class User{ private User(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
System.out.println("three");
}
public User(int id) {
super();
this.id = id;
System.out.println("one");
}
public User() {
super();
System.out.println("zero");
}
private int id;
private String username;
private String password;
}
测试类:Test
package com.reflect.test; import java.lang.reflect.Array;
import java.util.Properties; public class Test { public static void main(String[] args) { try { /*Class<?> superUserClass = userClass.getSuperclass();
Class<?>[] infs = userClass.getInterfaces();
//System.out.println(infs.length);
//Constructor[] Constructors = userClass.getConstructors();
Constructor<?>[] constructors = userClass.getDeclaredConstructors();
//System.out.println(constructors.length);
for(Constructor<?> constructor : constructors) {
int len = constructor.getParameterTypes().length;
if(!constructor.isAccessible()) {
constructor.setAccessible(true);
}
System.out.println(Modifier.toString(constructor.getModifiers()));
Class<?>[] typeClass = constructor.getParameterTypes();
switch(len) {
case 0 :
constructor.newInstance();
break;
case 1 : System.out.println(Modifier.toString(typeClass[0].getModifiers()));
constructor.newInstance(10);
break;
case 3 : System.out.println(Modifier.toString(typeClass[0].getModifiers()));
constructor.newInstance(10,"abc", "abc123");
break;
}
}*/ /*
//通过反射操作方法
Field[] fields = userClass.getDeclaredFields();
String setter = "set" + fields[1].getName().substring(0, 1).toUpperCase() + fields[1].getName().substring(1);
String getter = "get" + fields[1].getName().substring(0, 1).toUpperCase() + fields[1].getName().substring(1);
System.out.println(setter); Object user = userClass.newInstance(); Method method = userClass.getMethod(setter, String.class);
method.invoke(user, "10"); Method methodG = userClass.getMethod(getter);
Object obj = methodG.invoke(user);
System.out.println(obj);*/ /*//通过反射操作属性
Class<?> userClass = Class.forName("com.reflect.model.User");
Object user = userClass.newInstance();
Field[] fields = userClass.getDeclaredFields();
Field field = fields[0];
field.setAccessible(true);
field.set(user, 1);
System.out.println(field.get(user));
*/ /*//复制并扩展数组
int[] temp = {1,2,3,4,5,6,7,8,9};//原数组
int[] dest = (int[])Test.extendArray(temp, 200);//调用extendArray()方法扩展数组
for(int i = 0; i < dest.length; i++) {
System.out.println(dest[i] + "," + dest.length);
} //System.getenv()输出环境变量
Map<String, String> envs = System.getenv();
Iterator<String> ites = envs.keySet().iterator();
while(ites.hasNext()) {
String val = envs.get(ites.next());
}
List<Integer> ints = new ArrayList<Integer>();
*/ /*File f = new File("F:/a.txt");
PrintStream ps = new PrintStream(f);
System.setOut(ps);
Scanner scan = new Scanner(System.in);
for(int i = 0; i < 10; i++) {
System.out.println(i);
}*/
Properties pro = new Properties();
pro.setProperty("JAVA_HOME", "D:/java");
System.setProperties(pro); } catch (Exception e) {
e.printStackTrace();
}
} private static Object extendArray(Object obj, int length) {
Class<?> arrayType = obj.getClass().getComponentType();
Object arrayInstance = Array.newInstance(arrayType, length);
int objLength = Array.getLength(obj);
System.arraycopy(obj, 0, arrayInstance, 0, objLength);
return arrayInstance;
} }
Java 反射实例的更多相关文章
- java反射 实例
首先介绍几个概念: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反 ...
- Java 正则表达式实例操作
Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...
- Java反射机制可以动态修改实例中final修饰的成员变量吗?
问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...
- java 反射的实例
JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 ...
- java反射机制简单实例
目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...
- java反射技术实例
java反射技术实例1. [代码][Java]代码 package com.gufengxiachen.java.reflectiontest; public class Person {p ...
- Java反射学习总结四(动态代理使用实例和内部原理解析)
通过上一篇文章介绍的静态代理Java反射学习总结三(静态代理)中,大家可以发现在静态代理中每一个代理类只能为一个接口服务,这样一来必然会产生过多的代理,而且对于每个实例,如果需要添加不同代理就要去添加 ...
- Java知识总结:Java反射机制(用实例理解)
概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能 ...
- Java反射的实例
JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法; 这种动态获取的信息以及动态调用对象的方法的功能称为ja ...
随机推荐
- Spring第二天
Spring第二天 整体课程安排(3天+2天): 第一天:Spring框架入门.IoC控制反转的配置管理.Spring Web集成.Spring Junit集成. 第二天:Spring AOP面向切面 ...
- linux反弹shell
参考链接 http://www.cnblogs.com/r00tgrok/p/reverse_shell_cheatsheet.html http://www.waitalone.cn/linux-s ...
- 第六十七节,html表单元素
html表单元素 学习要点: 1.表单元素总汇 2.表单元素解析 本章主要探讨HTML5中表单元素,表单元素用于获取用户的输入数据. 一.表单元素总汇 HTML5的表单中,提供了各种可供用户输入的 ...
- iOS开发瀑布流的实现
//自定义布局,继承于UICollectionViewLayout #import <UIKit/UIKit.h> @class WaterFlowLayout; @protocol W ...
- PAT 团体程序设计天梯赛-练习集 L1-002. 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两 ...
- hdu 5469 Antonidas(树的分治+字符串hashOR搜索+剪枝)
题目链接:hdu 5469 Antonidas 题意: 给你一颗树,每个节点有一个字符,现在给你一个字符串S,问你是否能在树上找到两个节点u,v,使得u到v的最短路径构成的字符串恰好为S. 题解: 这 ...
- hdu_5950_Recursive sequence(矩阵快速幂)
题目链接:hdu_5950_Recursive sequence 题意:递推求解:F(n) = 2*F(n-2) + F(n-1) + n4 和F(1) = a,F(2) = b: 题解: 一看数据范 ...
- 4、mybatis动态sql+struts2(通配符+全局配置+分页)
1.创建userinfo.sql数据库脚本 create table USERINFO ( id NUMBER not null, uname ), password ), age NUMBER ) ...
- 一个简单的Servlet工具
以前老师在项目中用过一个Sevlet的工具,就是在请求Servlet的时候带一个参数,该参数决定要执行Servlet中的方法, public class ServletUtils extends Ht ...
- 推荐两个好用的Xcode插件(提供下载链接)
这里推荐两款好用的Xcode插件,并提供下载链接. 一.插件和使用如下: 1.两款插件 对项目中图片提供自动提示功能的插件:KSImageNamed-Xcode-master 提供快速创建自动注释:V ...