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)的更多相关文章

  1. java反射 - getXXX 与 getDeclaredXXX

    1.getXXX 和 getDeclaredXXX java 里 Class<?> 有下面这些方法: 类似的方法有: 2.getMethod(s) 和 getDeclaredMethod( ...

  2. java Reflection(反射)基础知识讲解

    原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...

  3. [改善Java代码]适时选择getDeclaredxxx和getxxx

    Java的Class类提供了很多的getDeclaredxxx方法和getxxx方法,例如getDeclaredmethod和getMethod成对出现,getDeclaredConstructors ...

  4. Java Reflection

    Java语言的反射机制 1. Java反射的含义:获取应用中正在运行的Java对象. 2. Java反射机制: 在运行的程序中,对于任意的类,都可以知道这个类的属性.方法以及构造函数,对于任意对象都可 ...

  5. Java Reflection 反射基础

    反射基础: package reflection; /** * Created by : Infaraway * DATE : 2017/3/2 * Time : 23:06 * Funtion : ...

  6. Some Link: Java Reflection

    http://docs.oracle.com/javase/tutorial/reflect/index.html https://bugs.openjdk.java.net/browse/JDK-4 ...

  7. java reflection总结

    一.java反射常用方法 获取Class的几种方式: Class class1 = String.class;// 该方法最为安全可靠,程序性能更高.         Class class2 = s ...

  8. Java Reflection - Getters and Setters

    原文链接:http://tutorials.jenkov.com/java-reflection/getters-setters.html 通过使用 Java 反射,我们能够在程序执行时观察 clas ...

  9. Java Reflection (JAVA反射) --转载

    对于软件开发人员来说,单元测试是一项必不可少的工作.它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的一些非 ...

随机推荐

  1. Robot Framework学习笔记(四)------Screenshot 库屏幕截图

    Scrennshot 同样为 Robot Framework 标准类库,我们只将它提供的其它中一个关键字"TakeScreenshot",它用于截取到当前窗口. 1.导入Scren ...

  2. Python新手需要掌握的知识点

    一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 二.数据结构 1 数字(加减乘除) 2 字符串(一串字符) 3 布尔 (真假) 4 元组 (不能修改的列表) 5 列表(Python的苦力,最 ...

  3. Python 词云分析周杰伦《晴天》

    一.前言满天星辰的夜晚,他们相遇了...夏天的时候,她慢慢的接近他,关心他,为他付出一切:秋天的时候,两个人终於如愿的在一起,分享一切快乐的时光但终究是快乐时光短暂,因为杰伦必须出国深造,两人面临了要 ...

  4. Python之旅本地环境搭建

    刚开始学习Python, 之后将会把Python相关的一些学习在此记录下来 . 毋庸置疑 ,我们需要先搭建本地开发环境, 为之后的Python开发做准备 ,这篇文章 ,将环境的搭建记录下来 第一步: ...

  5. 配置apache的文件访问路径

    本例中,我们让apache访问"F:/testObject/php"路径: 一.修改http.conf文件配置 访问路径:"apache/conf/httpd.conf& ...

  6. 从Unity中的Attribute到AOP(一)

    首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/conce ...

  7. 运算符、单双分支&多分支、while循环

    一 .运算符: 1. 算术运算符: " + "." - " ." * " ." / " 分别为加.减.乘.除. % 是& ...

  8. asp.net core 配置

    ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML配置文件web.config,现在支持各种格式的配置,比以前灵活 ...

  9. fb27a9aeaf604597826718c467cc9f4f 为什么我老收到这个

    fb27a9aeaf604597826718c467cc9f4f   为什么我老收到这个fb27a9aeaf604597826718c467cc9f4f   为什么我老收到这个fb27a9aeaf60 ...

  10. 51Nod 1091 线段的重叠(贪心+区间相关,板子题)

    1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...