/**
*@file_name Teacher.java
*@package_name com.luke
*@project_name InterviewQuestions
*@descripton
*@author luke
*@time 2013-1-21:下午10:41:11
*@version
*/
package com.luke;
/**
*@descripton
*@author luke
*@time 2013-1-21
*@version
*/
public class Worker
{
public String name;
protected int age;
private double salary;
public Worker(String name)
{
this.name = name;
}
protected Worker(int age)
{
this.age = age;
}
private Worker(double salary)
{
this.salary = salary;
}
public String getName()
{
return name;
}
protected int getAge()
{
return age;
}
private double getSalary()
{
return salary;
}
}
public static void main(String[] args)
{
try
{
Class clsWorker = Class.forName("com.luke.Worker");
Constructor[] allPublicConstructors = clsWorker.getConstructors();
System.out.println("all public constructors(including declared and extending from parent as fllows:");
for (Constructor con : allPublicConstructors)
{
System.out.println(con);
}
System.out.println("-----------------------");
Constructor[] allDeclaredConstructors = clsWorker.getDeclaredConstructors();
System.out.println("all declared constructors(including only in current class exclusive extending from parent) as fllows:");
for (Constructor con : allDeclaredConstructors)
{
System.out.println(con);
}
Constructor publicConstructor = clsWorker.getConstructor(String.class);
Worker publicWorker = (Worker)publicConstructor.newInstance("luke");
Constructor protectedConstructor = clsWorker.getDeclaredConstructor(int.class);
Worker protectedWorker = (Worker)protectedConstructor.newInstance(20);
Constructor privateConstructor = clsWorker.getDeclaredConstructor(double.class);
privateConstructor.setAccessible(true);//must not forget this, when use private constructor!
Worker privateWorker = (Worker)privateConstructor.newInstance(8888.8);
System.out.println("-----------------------");
Field[] allPublicFields = clsWorker.getFields();
System.out.println("all public fields as fllows:");
for (Field field : allPublicFields)
{
System.out.println(field.getName());
}
System.out.println("-----------------------");
Field[] allDeclaredFields = clsWorker.getDeclaredFields();
System.out.println("all declared fields as fllows:");
for (Field field : allDeclaredFields)
{
System.out.println(field.getName());
}
System.out.println("-----------------------");
Field salary = clsWorker.getDeclaredField("salary");
salary.setAccessible(true);//must not forget this, when access private field!
System.out.println("before reset salary===" + salary.get(privateWorker));
salary.set(privateWorker, 99999.9);
System.out.println("after reset salary===" + salary.get(privateWorker));
System.out.println("-----------------------");
Method[] allPublicMethods = clsWorker.getMethods();
System.out.println("all public methods as fllows:");
for (Method method : allPublicMethods)
{
System.out.println(method);
}
System.out.println("-----------------------");
Method[] allDeclaredMethods = clsWorker.getDeclaredMethods();
System.out.println("all declared methods as fllows:");
for (Method method : allDeclaredMethods)
{
System.out.println(method);
}
System.out.println("-----------------------");
Method privateMethod = clsWorker.getDeclaredMethod("getSalary", null);
System.out.println("is method accessible===" + privateMethod.isAccessible());
privateMethod.setAccessible(true);//must not forget this, when access private method!
System.out.println("getSalary()===" + privateMethod.invoke(privateWorker, null));
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SecurityException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchMethodException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InstantiationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvocationTargetException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchFieldException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
####output####
all public constructors as fllows:
public com.luke.Worker(java.lang.String)
-----------------------
all declared constructors as fllows:
public com.luke.Worker(java.lang.String)
protected com.luke.Worker(int)
private com.luke.Worker(double)
-----------------------
all public fields as fllows:
name
-----------------------
all declared fields as fllows:
name
age
salary
-----------------------
before reset salary===8888.8
after reset salary===99999.9
-----------------------
all public methods as fllows:
public java.lang.String com.luke.Worker.getName()
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
-----------------------
all declared methods as fllows:
public java.lang.String com.luke.Worker.getName()
private double com.luke.Worker.getSalary()
protected int com.luke.Worker.getAge()
-----------------------
is method accessible===false
getSalary()===99999.9
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
java反射java反射java反射java反射java反射
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射demo
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
java反射理论及实现
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!