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 ...
随机推荐
- SpringMVC 学习-拦截器 HandlerInterceptor 类
一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...
- 超好:web app变革之rem
感谢你的阅读,本文由 腾讯ISUX 版权所有,转载时请注明出处,违者必究,谢谢你的合作.注明出处格式:腾讯ISUX (https://isux.tencent.com/web-app-rem.html ...
- String类之endsWith方法--->检测该字符串以xx为结尾
endsWith(XX)方法是java内置类String类的一个内置方法,我们直接拿来用即可了,下边是api说明:检测该字符串以xx为结尾,结果返回布尔值 public class Demo { pu ...
- oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
前言:在oracle运维的过程中,经常会使用到一些以V$开头的动态视图,比如V$session, 有一次偶然看到有人用V_$session, 初以为别人写错了,没想到desc v_$session以后 ...
- 如何安全退出已调用多个Activity的Application?
如何退出Activity?如何安全退出已调用多个Activity的Application? 退出Activity直接调用finish()方法 //用户点击back键就是退出一个Activity 退出 ...
- vultr vps官网改版免费注册教程(最新优惠码)
本站强烈推荐的,国外超高性价比vps服务器Vultr官方网站最近更新了,导致一些朋友心生茫然,今天写个简易教程给大家. 首先是打开vultr官网,免费注册一个vultr账号.填写邮箱地址.密码,非常简 ...
- idea 切换新项目 新窗口 原窗口
选择 file--setting. 在新打开的窗口中选择 Appearance & Behavior--System Settings 点 Confirm window to open pro ...
- NOIP2014-普及组复赛-第一题-珠心算测验
题目描述 Description 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...
- C#第九天
1.绝对路径和相对路径绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件. 相对路径:文件相对于应用程序的路径. 结论:我们在开发中应该去尽量的使用相对路径. 2.装箱.拆箱 装箱:就是将值类 ...
- css3字体
1.定义个性化字体 @font-face{ font-family:字体名字; src:字体地址,可以多写几个用逗号隔开兼容浏览器 } div{ font-family:字体名字/*使用字体*/ } ...