Java Reflection(getXXX和getDeclaredXXX)
package com.sunchao.reflection;
public class Person {
private int age ;
private String name;
public String address;
public static final int X = 0;
private static final int Y = 0;
public Person() {
}
private Person(String name) {
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
@SuppressWarnings("unused")
private void cry() {
}
public static void eat() {
}
}
package com.sunchao.reflection; import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier; /**
* Java reflection
public com.sunchao.reflection.Person()
public com.sunchao.reflection.Person(int arg0; java.lang.String arg1)
public com.sunchao.reflection.Person(int arg0)
<==============================================>
public void setAge(int arg0)
public int getAge()
public static void eat()
public String getName()
public void setName(String arg0)
public final native Class getClass()
public native int hashCode()
public boolean equals(Object arg0)
public String toString()
public final native void notify()
public final native void notifyAll()
public final void wait(long arg0; int arg1)
public final void wait()
public final native void wait(long arg0)
<==============================================>
public void setAge(int arg0)
public int getAge()
private void cry()
public static void eat()
public String getName()
public void setName(String arg0)
<==============================================>
public String address
public static final int X
<==============================================>
private int age
private String name
public String address
public static final int X
private static final int Y
* @author Administrator
*
*/
public class Test { public static void main(String args[]) throws Exception{
testConstructor();
testMethods();
testDeclaredMethods();
testFields();
testDeclaredFields();
} /**
* print the public constructor of the class,
* not all,getDeclaredConstructors() ==> getAll
* @throws Exception
*/
public static void testConstructor() throws Exception{ Class<?> clazz = Class.forName("com.sunchao.reflection.Person");
Constructor<?>[] constructors = clazz.getConstructors();
for(Constructor<?> c : constructors){
int modifiers = c.getModifiers();
String modfifier = Modifier.toString(modifiers);
String name = c.getName();
Class<?>[] parameterTypes = c.getParameterTypes();
StringBuilder sb = new StringBuilder();
sb.append("(");
for(int i = 0; i < parameterTypes.length; i++){
if(i != 0){
sb.append("; ");
}
sb.append(parameterTypes[i].getName() + " arg" + i);
}
sb.append(")");
System.out.println(modfifier + " " + name + sb.toString() );
}
}
/**
* print all the method that the class and superclass
* interface declares(except the private)
* @throws Exception
*/
public static void testMethods() throws Exception {
System.out.println("<==============================================>");
Class<?> clazz = Class.forName("com.sunchao.reflection.Person");
Method[] allMethods = clazz.getMethods();//includes all the interface ,superclass methods
for(Method method : allMethods)//(except the private)
{
int modifiers = method.getModifiers();
String modifier = Modifier.toString(modifiers);
Class<?> returnClass = method.getReturnType();
String name = method.getName();
Class<?>[] parameterTypes = method.getParameterTypes();
StringBuilder sb = new StringBuilder();
sb.append("(");
for(int i = 0; i < parameterTypes.length; i++)
{
if(i != 0)
{
sb.append("; ");
}
sb.append(parameterTypes[i].getSimpleName() + " arg" + i);
}
sb.append(")");
System.out.println(modifier + " " + returnClass.getSimpleName() + " "
+ name + sb.toString());
}
}
/**
* print the all methods that the class declared;
* @throws Exception
*/
public static void testDeclaredMethods() throws Exception {
System.out.println("<==============================================>");
Class<?> clazz = Class.forName("com.sunchao.reflection.Person");
Method[] methods = clazz.getDeclaredMethods();
for(Method method : methods)
{
int modifiers = method.getModifiers();
String modifier = Modifier.toString(modifiers);
Class<?> returnType = method.getReturnType();
String name = method.getName();
Class<?>[] parameterTypes = method.getParameterTypes();
StringBuilder sb = new StringBuilder();
sb.append("(");
for(int i = 0; i < parameterTypes.length; i++)
{
if(i != 0)
{
sb.append("; ");
}
sb.append(parameterTypes[i].getSimpleName() + " arg" + i);
}
sb.append(")");
System.out.println(modifier + " " + returnType.getSimpleName() + " "
+ name + sb.toString());
}
}
/**
* print the fields of public(includes the static ,final modifier)
* but the private is pass
* @throws Exception
*/
public static void testFields() throws Exception {
System.out.println("<==============================================>");
Class<?> clazz = Class.forName("com.sunchao.reflection.Person");
Field[] fields = clazz.getFields();
for(Field field : fields)
{
int modifiers = field.getModifiers();
String modifier = Modifier.toString(modifiers);
Class<?> fieldType = field.getType();
String name = field.getName();
System.out.println(modifier + " " + fieldType.getSimpleName() +
" " + name);
}
} /**
* print the all fields that the class declared
* @throws Exception
*/
public static void testDeclaredFields() throws Exception {
System.out.println("<==============================================>");
Class<?> clazz = Class.forName("com.sunchao.reflection.Person");
Field[] fields = clazz.getDeclaredFields();
for(Field field : fields)
{
int modifiers = field.getModifiers();
String modifier = Modifier.toString(modifiers);
Class<?> fieldType = field.getType();
String name = field.getName();
System.out.println(modifier + " " + fieldType.getSimpleName() +
" " + name);
}
}
}
Java Reflection(getXXX和getDeclaredXXX)的更多相关文章
- java反射 - getXXX 与 getDeclaredXXX
1.getXXX 和 getDeclaredXXX java 里 Class<?> 有下面这些方法: 类似的方法有: 2.getMethod(s) 和 getDeclaredMethod( ...
- java Reflection(反射)基础知识讲解
原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...
- [改善Java代码]适时选择getDeclaredxxx和getxxx
Java的Class类提供了很多的getDeclaredxxx方法和getxxx方法,例如getDeclaredmethod和getMethod成对出现,getDeclaredConstructors ...
- Java Reflection
Java语言的反射机制 1. Java反射的含义:获取应用中正在运行的Java对象. 2. Java反射机制: 在运行的程序中,对于任意的类,都可以知道这个类的属性.方法以及构造函数,对于任意对象都可 ...
- Java Reflection 反射基础
反射基础: package reflection; /** * Created by : Infaraway * DATE : 2017/3/2 * Time : 23:06 * Funtion : ...
- Some Link: Java Reflection
http://docs.oracle.com/javase/tutorial/reflect/index.html https://bugs.openjdk.java.net/browse/JDK-4 ...
- java reflection总结
一.java反射常用方法 获取Class的几种方式: Class class1 = String.class;// 该方法最为安全可靠,程序性能更高. Class class2 = s ...
- Java Reflection - Getters and Setters
原文链接:http://tutorials.jenkov.com/java-reflection/getters-setters.html 通过使用 Java 反射,我们能够在程序执行时观察 clas ...
- Java Reflection (JAVA反射) --转载
对于软件开发人员来说,单元测试是一项必不可少的工作.它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的一些非 ...
随机推荐
- 执行查询“BACKUP LOG [XXX] TO DISK = N'F:\\BackData\\事务日至备份\\...”失败,错误如下:“无法执行 BACKUP LOG,因为当前没有数据库备份。 BACKUP LOG 正在异常终止。
执行查询"BACKUP LOG [XXX] TO DISK = N'F:\\BackData\\事务日至备份\\..."失败,错误如下:"无法执行 BACKUP LOG ...
- 关于SPF记录的说明
详细了解SPF记录的可以查看一下这篇博文:http://www.renfei.org/blog/introduction-to-spf.html 关于 SPF SPF:Sender Policy Fr ...
- Oracle相关知识做个总结
一.创建用户: 以系统管理员登陆,右键点击Uers进行新建, 一般:默认空间选择USERS,临时表空间选择TEMP,概要文件选择DEFAULT. 对象权限:不做操作. 角色权限:1.connect 2 ...
- Spring中配置数据源的四种方式
1.spring自带的数据源 <bean id="dataSource" class="org.springframework.jdbc.datasource.Dr ...
- Oracle COMMIT语句的处理顺序
Oracle COMMIT语句相信大家都有一定的了解,下面就为您介绍Oracle COMMIT语句的处理步骤,希望对您能有所帮助. Oracle COMMIT语句处理顺序 当事务提交时,Oracle分 ...
- JS 获取字符串实际长度
解决思路,把中文转换为两个字节的英文,再计算长度. function getStrLength(str) { return str.replace(/[\u0391-\uFFE5]/g,"a ...
- linux下使用 FreeRDP 连接 Windows 远程桌面(转)
这是一种最简单的使用方法,转载自http://wenzhixin.net.cn/2014/03/16/ubuntu_xfreerdp 简介 FreeRDP 是一款开源的远程桌面系统,支持多种平台, 在 ...
- H5 调用本地相机并压缩上传(是从angular的ionic项目中截取的)
html部分 <div class="list_upload item bg_white"> <div class="itemImg pic_uploa ...
- 多个tab选项卡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- LoadRunner 中实现MD5加密
最近在用loadrunner做一个压力测试,在编写脚本的时候发现传递参数的时候需要一个sign值,这个值是将参数进行MD5加密生成的,所以下面就说一说怎么对参数进行MD5加密. 1.首先我们需要一个加 ...