<pre name="code" class="java">import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method; class Point{
int x;
private int y; public Point(){
x = 1;
y = 2;
} public void setX(int x) {
this.x = x;
} public void setY(int y) {
this.y = y;
} private Point(int x){
this();
this.x = x;
} public Point(int x, int y) {
super();
this.x = x;
this.y = y;
} public void printPoint(){
System.out.println("x = " + x + " , y = " + y);
}
} public class ReflectTest2 { public static void main(String[] args) throws Exception { //使用第一种方法创建对象
Class cls1 = Class.forName("Point");
Constructor con1 = cls1.getConstructor(int.class,int.class);
Point p1 = (Point) con1.newInstance(5,6);
p1.printPoint(); //使用另外一种方法创建对象
Class cls2 = Point.class;
Point p2 = (Point) cls2.newInstance();//无參构造函数
p2.printPoint(); //使用第三种方法创建对象
Class cls3 = p1.getClass();
//使用p1对象的setX方法将x值改动为10
Method m1 = cls3.getMethod("setX", int.class);
m1.invoke(p1, 10);
p1.printPoint(); /*
* Note:
* getDeclaredConstructor能够返回指定參数的构造函数,
* 而getConstructor仅仅能放回指定參数的public的构造函数
* */
Constructor con2 = cls3.getDeclaredConstructor(int.class);
//訪问私有变量、函数须要设置accessible
con2.setAccessible(true);
Point p4 = (Point) con2.newInstance(3);
p4.printPoint(); //Field f1 = cls3.getField("y");//error
Field f1 = cls3.getDeclaredField("y");
f1.setAccessible(true);
//获取p1的y值
System.out.println(f1.get(p1));
} }

Java 反射经常用法演示样例的更多相关文章

  1. java 状态模式 解说演示样例代码

    package org.rui.pattern; import junit.framework.*; /** * 为了使同一个方法调用能够产生不同的行为,State 模式在代理(surrogate)的 ...

  2. delphi webbrowser 经常用法演示样例

    var Form : IHTMLFormElement ; D:IHTMLDocument2 ; begin with WebBrowser1 do begin D := Document as IH ...

  3. java 覆盖hashCode()深入探讨 代码演示样例

    java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...

  4. java并行调度框架封装及演示样例

    參考资料:  阿里巴巴开源项目 CobarClient  源代码实现. 分享作者:闫建忠 分享时间:2014年5月7日 ---------------------------------------- ...

  5. Java连接redis的使用演示样例

    Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...

  6. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  7. java 线程、线程池基本应用演示样例代码回想

    java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...

  8. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

  9. JAVA简单Swing图形界面应用演示样例

    JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...

随机推荐

  1. swift语言点评二十-扩展

    结论:扩展无法修改原来的数据结构. Extensions can add new functionality to a type, but they cannot override existing ...

  2. span文本自动换行

    .span{ word-wrap: break-word; word-break: break-all; overflow: hidden; }

  3. 在 android studio 中更新安卓应用版本号

    随着应用程序不断修改,版本号也应当变化.要更新安卓应用的版本号,只需要在 build.gradle(module:app) 中修改 versionCode 和 versionName 即可,也可以只改 ...

  4. JavaScript内存机制

    内存模型 JS内存空间分为栈(stack).堆(heap).池(一般也会归类为栈中). 其中栈存放变量,堆存放复杂对象,池存放常量. 基础数据类型与栈内存 JS中的基础数据类型,这些值都有固定的大小, ...

  5. mac终端安装webpack的时候报错Err,解决的办法 sudo npm install webpack -g

    MacBook-Air:~ xxx$ npm install webpack -g npm WARN invalid config registry="" npm WARN inv ...

  6. Ajax通过script src特性加载跨域文件 jsonp

    <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Do ...

  7. python登录注册改良版

    #在执行本脚本的时候,需要先注册,否则会报字符串不匹配sum=3while True: #如果条件为真,则一直循环 print("先注册,在登录") print("1.注 ...

  8. LAMP环境搭建备忘 -- MariaDB 安装(三)

    因为 MySQL 的一些原因,在 Linux 平台上的开源数据库渐渐被 MariaDB 取代. MariaDB 安装命令如下图 安装成功后,接下来就启动这个数据库服务 我们还需要对数据库做一些初始化的 ...

  9. 浅谈 MySQL的外键的作用

    MySQL中外键的介绍: MySQL外键必须使用存储引擎为  innDB  其中MySAM 和MEMORYH这两种引擎不支持 由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的 ...

  10. pip 出错

    pip 升级到10以上出错 ImportError: cannot import name 'main' 解决方法一: 降低pip的版本号 python -m pip install pip==9.0 ...