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 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的一些非 ...
随机推荐
- Android动画(二)-属性动画
我们在上一篇博客中,讨论了视图动画与帧动画.那么这节课则要讨论更复杂,更强大的Property animation(属性动画). 视图动画使用简单,但是功能也简单.(只有那四种功能).并且也不改变Vi ...
- HTML5本地存储应用sessionStorage和localStorage
在html5之前,浏览器要实现数据的存储,一般都是用cookie,但是cookie有域名和大小限定. html5流行之后,可以通过localStorage和sessionStorage实现浏览器端的数 ...
- ssh的免密登陆
想必大家都有使用ssh登陆的过程了,那么,怎么设置ssh免密登陆呢?下面有一些我的总结: 环境:服务器主.从 主服务器:192.168.1.1 从服务器:192.168.1.2 实现主服务器ssh登录 ...
- grpc 入门(一)--hello world
一,从rpc接口的定义说起,下面给一个最简单的grpc示例--hello world 在这个rpc横行的世界里,实现一个rpc很重要的一件事就是定义一个好接口,一个好的接口定义会让你省去很多麻烦.熟悉 ...
- 【数论】洛谷P1313计算系数
题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...
- Excel生成guid、uuid
1.Excel生成guid,uuid 格式:600d65bc-948a-1260-2217-fd8dfeebb1cd =LOWER(CONCATENATE(DEC2HEX(RANDBETWEEN(, ...
- Android数据库之判断表是否存在
Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...
- 浅谈我的MongoDB学习(二)
上一篇简单讲了mongodb的安装,mongo的windows服务安装,这样服务器重启windows服务会自动重启mongodb的server,然后我们就可以用客户端去管理数据了.mongodb客户端 ...
- Linux 内核死锁
死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的一种状态.当等待的资源一直得不到释放,死锁会一直持续下去.死锁一旦发生,程序本身是解决不了的,只能依靠外部力量使得程序恢复运行, ...
- WEB相关系列
一.Nginx(web服务器) Nginx概述和安装(1) Nginx配置文件(2) Nginx日常维护操作(3) Nginx常用配置实例(4) Nginx常用功能(5) Nginx性能优化技巧(6) ...