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 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的一些非 ...
随机推荐
- 【Python3之函数对象】
函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First- ...
- Vue自己写组件——Demo详细步骤
公司近期发力,同时开了四五个大项目,并且都是用Vue来做的,我很荣幸的被分到了写项目公用模块的组,所以需要将公用的部分提取成组件的形式,供几个项目共同使用,下面详细讲一下写Vue组件的具体步骤. 一. ...
- Windows高速定时器,多媒体定时器winmm.dll库的使用
项目里面用到的这些看起来名字高大上的定时器测试下来也是非常不准.看了源码发现也是用System.Timers.Timer或者用的是Thread休眠的方式来实现的.100毫秒就不准了.直到一番搜索,发现 ...
- 不要错过iost币的免费派发机会
2013 年 ripple 币曾经进行免费派发,而现在瑞波币兑CNY价格最高曾经达到20元, 如果你错过了 ripple 币,就不要错过这次李笑来和徐小平等背书 iost 币的免费派发
- Zabbix实战-简易教程--排错(持续收集中)
一.安装错误 1.zabbix 安装故障之无法跳到下一步或点击下一步没反应 执行命令:chownnginx:nginx /var/lib/php/session/ -R 2.proxy上无法采集交 ...
- 简单的基于hash和hashchange的前端路由
hash定义 hash这个玩意是地址栏上#及后面部分,代表网页中的一个位置,#后面部分为位置标识符.页面打开后,会自动滚动到指定位置处. 位置标识符 ,一是使用锚点,比如<a name=&quo ...
- zookeeper之分布式锁以及分布式计数器(通过curator框架实现)
有人可能会问zookeeper我知道,但是curator是什么呢? 其实curator是apachede针对zookeeper开发的一个api框架是apache的顶级项目 他与zookeeper原生a ...
- 2017 ICPC区域赛(西安站)--- J题 LOL(DP)
题目链接 problem description 5 friends play LOL together . Every one should BAN one character and PICK o ...
- Javascrip随笔1
isNaN:指示某个值不是数字 文本字符串中使用反斜杠对代码行进行换行; 在计算机程序中,经常会声明无值的变量.未使用值来声明的变量,其值实际上是 undefined.在执行过以下语句后,变量 car ...
- metasploit联动beef启动
(温馨提示:请按照步骤来,否则beef到后面会启动不了) 我们首先进入vim /usr/share/beef-xss/config.yaml 找到metasploit把它改为启动 把false改为tr ...