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 ...
随机推荐
- 设计模式 -- 解释器模式(Interpreter Pattern)
2015年12月15日00:19:02 今天只看了理论和demo,明天再写文章,跑步好累 2015年12月15日21:36:00 解释器模式用来解释预先定义的文法. <大话设计模式>里面这 ...
- 淘淘商城_day09_课堂笔记
今日大纲 实现购物车 基于Mysql实现读写分离 购物车 需求描述 用户可以在登录状态下将商品添加到购物车 用户可以在未登录状态下将商品添加到购物车 用户可以使用购物车一起结算下单 用户可以查询自己的 ...
- js-字符串函数
js字符串函数 JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";v ...
- [CSS备忘]改变选中文本的颜色::selection
/*Webkit,Opera9.5+,IE9+*/ ::selection { background:red; color:white; } /*Firefox*/ ::-moz-selection ...
- JS复习第五章
第五章 引用类型 一.Object类型 创建object实例的方式有两种. 第一种是使用new操作符后跟object构造函数,如下所示: ver person = new Object( ) ; pe ...
- js返回上一页并刷新代码整理
一:JS 重载页面,本地刷新,返回上一页 复制代码 代码如下: <a href="javascript:history.go(-1)">返回上一页</a> ...
- ssh原理[转]
SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...
- mybatis 查询语句(按条件查询)
<select id="getAllDitch" parameterType="xxx.xx.entity.CheckDitch" resultType= ...
- hdu_5873_Football Games(xjb搞)
题目链接:hdu_5873_Football Games 题意: 有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分 题解: 可以知 ...
- git clone 出现 RPC failed 错误的解决方案
今天使用git clone一个大型项目的时候出现了如下错误: