- 浏览: 261903 次
- 性别:
- 来自: 多伦多
文章分类
- 全部博客 (127)
- Java 基础 (46)
- Java EE (3)
- Clouds (1)
- Spring 编程 (7)
- Spring Batch 编程 (1)
- Quartz 编程 (9)
- Seam 编程 (4)
- Hibernate 编程 (1)
- JSF 编程 (3)
- jQuery 编程 (3)
- Interview Question 汇总 (3)
- 日常应用 (3)
- Maven 编程 (2)
- WebService 编程 (10)
- Scala 编程 (5)
- Coherence 编程 (8)
- OO 编程 (1)
- Java 线程 (6)
- DB 编程 (2)
- WebService 安全 (4)
- Oracle Fusion 编程 (2)
- JavsScript/Ajax 编程 (1)
最新评论
-
chainal:
赞,说的很好
Scala 有趣的Trait -
wuliupo:
RRRR-MM-DD HH24:MI:SS
如何让Oracle SQL Developer显示的包含在日期字段中的时间 -
pengain:
...
使用Spring Roo ,感受ROR式的开发 -
zeng1990:
def getPersonInfo() = {
(&quo ...
Java 的继位人? - Scala简介 -
zeng1990:
我使用的是2.9.2版本的!
Java 的继位人? - Scala简介
转自http://www.blogjava.net/ronghao
一、执行期根据方法的名称来执行方法
下面的示例演示了这一操作:
import java.lang.reflect.*;
public class method2 {
public int add(int a, int b) {
return a + b;
}
public static void main(String args[]) {
try {
Class cls = Class.forName("method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod("add", partypes);
method2 methobj = new method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = meth.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intvalue());
} catch (Throwable e) {
System.err.println(e);
}
}
}
public class method2 {
public int add(int a, int b) {
return a + b;
}
public static void main(String args[]) {
try {
Class cls = Class.forName("method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod("add", partypes);
method2 methobj = new method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = meth.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intvalue());
} catch (Throwable e) {
System.err.println(e);
}
}
}
注:上面划线的粗体字最好用Object methobj =
cls.newInstance();来代替,原因很明显如果这个类及方法事先都是清楚的也不需要用reflection了
假如一个程序在执行的某处的时候才知道需要执行某个方法,这个方法的名称是在程序的运行过程中指定的 (例如,JavaBean
开发环境中就会做这样的事),那么上面的程序演示了如何做到。上例中,getMethod 用于查找一个具有两个整型参数且名为 add
的方法。找到该方法并创建了相应的 Method 对象之后,在正确的对象实例中执行它。执行该方法的时候,需要提供一个参数列表,这在上例中是分别包装了整数 37 和
47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象,它封装了返回值
84。
二、执行期创建新的对象
对于构造器,则不能像执行方法那样进行,因为执行一个构造器就意味着创建了一个新的对象 (准确的说,创建一个对象的过程包括分配内存和构造对象)。所以,与上例最相似的例子如下:
import java.lang.reflect.*;
public class constructor2 {
public constructor2() {
}
public constructor2(int a, int b) {
System.out.println("a = " + a + " b = " + b);
}
public static void main(String args[]) {
try {
Class cls = Class.forName("constructor2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Constructor ct = cls.getConstructor(partypes);
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = ct.newInstance(arglist);
} catch (Throwable e) {
System.err.println(e);
}
}
}
public class constructor2 {
public constructor2() {
}
public constructor2(int a, int b) {
System.out.println("a = " + a + " b = " + b);
}
public static void main(String args[]) {
try {
Class cls = Class.forName("constructor2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Constructor ct = cls.getConstructor(partypes);
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = ct.newInstance(arglist);
} catch (Throwable e) {
System.err.println(e);
}
}
}
三、改变字段(域)的值
reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它,下面的例子可以说明这一点:
import java.lang.reflect.*;
public class field2 {
public double d;
public static void main(String args[]) {
try {
Class cls = Class.forName("field2");
Field fld = cls.getField("d");
field2 f2obj = new field2();
System.out.println("d = " + f2obj.d);
fld.setDouble(f2obj, 12.34);
System.out.println("d = " + f2obj.d);
} catch (Throwable e) {
System.err.println(e);
}
}
}
public class field2 {
public double d;
public static void main(String args[]) {
try {
Class cls = Class.forName("field2");
Field fld = cls.getField("d");
field2 f2obj = new field2();
System.out.println("d = " + f2obj.d);
fld.setDouble(f2obj, 12.34);
System.out.println("d = " + f2obj.d);
} catch (Throwable e) {
System.err.println(e);
}
}
}
这个例子中,字段 d 的值被变为了 12.34。
实际开发时用Common BeanUtils
实际开发时用Common BeanUtils
发表评论
-
设计模式之事务处理
2010-11-25 07:36 912转自 http://www.blogjava.net/kill ... -
设计自己的MVC框架(1)
2010-11-25 07:27 1251转自 http://www.blogjava.net/ ... -
设计自己的MVC框架(2)
2010-11-25 07:24 1178转自 http://www.blogjava.ne ... -
使用Annotation设计持久层
2010-11-25 06:59 955(From http://www.blogjava. ... -
Jakarta Commons StringUtils类使用
2010-11-25 06:58 935转自http://www.blogjava.net/ ... -
Jakarta Commons ArrayUtils类使用
2010-11-25 06:57 1132转自http://www.blogjava.net/ ... -
用commons.fileupload实现文件的上传和下载
2010-11-25 06:55 1399转自http://www.blogjav ... -
JAVA基础:共享内存在Java中的实现和应用
2010-11-25 06:54 873(转自 http://www.bu ... -
JAVA变量类型之间的相互转换
2010-11-25 06:52 899(转自 http://www.builder.c ... -
优秀Java程序员必须了解的GC工作原理
2010-11-25 06:52 887(转自 http://www.build ... -
几种版权信息详解
2010-11-25 06:49 1131BSD开源协议(original ... -
Java JDK 1.4 JCE Provider issue.
2010-11-25 06:48 1174Bundled JCE provider in jdk1 ... -
Why use Map.entrySet() instead of Map.keySet()?
2010-11-25 06:45 1393(From http://www.coderan ... -
Credit Card Mod10 校验
2010-11-25 06:27 2076以下是几种Mod10的实现。第一种最为简洁,最后一种 ... -
如何知道方法的调用者
2010-11-25 05:57 7399转自http://hellboys.bok ... -
Java加解密的基础
2010-11-25 05:49 2821在Java的安全包中,包括了三部分内容: ... -
Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logback
2010-11-25 05:47 1858Log4j Apache的一个开放源代码项目,通过 ... -
Java SE 6新特性:Instrumentation
2010-11-25 05:35 1076(转自http://baike.baidu.com ... -
JBOSS 启动 加载 过程
2010-09-11 00:26 3024(转自: http://blog.csdn.net/ylli_ ... -
JAVA性能优化—Sun Hotspot JDK JVM参数设置
2010-09-11 00:18 1206(转自: http://www.hashei.me/2009/ ...
相关推荐
在Meep中,我们通常会定义一个包含金属结构的二维或三维模型,并设置入射光的波长、角度和极化状态。"Transmission"在这里指的是光穿过金属结构后的透射率,它与材料的折射率、吸收率以及结构的几何特性密切相关。...
GWT(Google Web Toolkit)反射是GWT框架中的一个重要特性,它允许开发者在客户端(即浏览器端)使用Java的反射API。...同时,开源的性质使得社区可以共同维护和改进这个库,使其不断适应新的开发需求。
1. **三维雕刻动态显示**:通过对地震反演波阻抗数据进行处理,实现了矿体的三维动态显示。这不仅有助于直观地了解水合物的分布情况,还能够动态调整视角,更全面地分析矿体特征。 2. **BSR曲面显示**:BSR...
标题中的"Reflection-coefficient.zip_绘图程序_C/C++_"表明这是一个关于使用C或C++编程语言编写的程序,主要用于绘制地下地质模型中不同入射角下反射系数的图形。这个程序可能涉及到地震波传播、地质勘探或者相关...
本文件很可能是为八年级学生准备的一套练习题,旨在帮助他们巩固和深化对这三个几何变换的理解。 首先,我们来详细了解一下平移、翻折和旋转这三个基本的几何变换: 1. 平移(Translation): 平移是将一个图形沿...
- **轴对称(Reflection)**:图形沿一条直线折叠,两侧部分完全重合,这条直线是对称轴。 - **旋转(Rotation)**:图形绕一个定点转动一定角度。 这三种变换都是全等变换,即变换前后图形保持大小和形状不变。...
三、反射(Reflection) 反射是图形关于一条直线(反射轴)对称的变换。若某图形上任意一点P通过反射轴后得到对应点P',则P与P'到反射轴的距离相等,且它们与反射轴的连线形成一对对顶角。反射可以是水平的、垂直的...
:star: :star: :star:喜欢这个项目的话就Star,Fork,Follow Quality三连关 :male_sign:注一下吧 :star: :star: :star:项目开发模式:日常代码积累+网络搜集本项目已得到的支持!明星趋势请注意:一旦使用本开源...
4. **自然数分类**:自然数(不包含0)按因数数量可分为质数(只有两个因数1和自身)、合数(至少有三个因数)和1(既不是质数也不是合数)。 5. **素数**:20以内的素数有2, 3, 5, 7, 11, 13, 17, 19,共8个。 6....
本文主要研究了利用衰减全反射法(Attenuated Total Reflection, ATR)来研究极薄介质层的光学性质。此法不同于传统光学方法,通过测量极薄介质层覆盖的银膜的衰减全反射谱(ATR谱)并进行拟合运算,可以确定极薄介质层...
#### 三、马尔可夫随机场与隐马尔可夫模型(MRFs and HMMs) 这部分内容介绍了两种与马尔可夫链相关的更高级模型:马尔可夫随机场(MRF) 和隐马尔可夫模型(HMM)。 ##### 3.1 马尔可夫随机场与隐马尔可夫模型(MRF’...
ASTER GDEM V3是Advanced Spaceborne Thermal Emission and Reflection Radiometer(ASTER)项目的第三个全球数字高程模型版本,由NASA和日本宇宙航空研究开发机构联合提供,提供了全球范围内的高分辨率地形数据。...
这不仅有助于了解最新的国际研究成果和技术动态,还能促进国际合作与交流。 #### 二、光学晶体与传统光学元件的专业术语 1. **Optical Crystals (光学晶体):** - **YVO4 (Yttrium Vanadate):** 钒酸钇,一种重要...
将牛郎织女分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合) 设计模式之 Flyweight(共享元) 提供 Java运行性能,降低小而大量重复的类的开销. C. 行为模式 设计模式之 Command(命令) ...
计算机图形学中的光照模型是指在已知物体物理形态和光源性质的情况下,用于计算场景光照效果的数学模型。通过这些模型,可以在计算机上模拟出非常接近真实的光照效果。光照模型可以分为简单的光照模型和复杂的光照...
物体材质的性质对其表面的光照效果有着直接影响。主要涉及到以下几点: 1. **漫反射**(Diffuse Reflection):光线照射到粗糙表面时会发生各向同性的反射,使得物体呈现出一定的颜色。 2. **镜面反射**(Specular ...
单期模型是理解金融市场动态最简单的方式之一,它帮助读者了解在单一时间点上如何进行金融资产定价。 ##### 1.1 金融定义 - **金融工具**:本书首先介绍了金融工具的基本定义,包括股票、债券、衍生品等。 - **...
1. Attach(附加)和Attach Mult(附加多个)用于合并对象,Refine添加点,Weld焊接,Filet切圆角,Chamfer切直角。 2. 布尔运算包括Outline(轮廓)、Boolean(布尔运算),如加运算、减运算、交叉运算,Bevel倒角...
本文作者通过分析方程和数值模拟,研究了正常入射反射系数(Normal Incidence Reflection Coefficient, NI)作为频率函数的特性,特别是在非色散介质与部分饱和色散介质界面上的变化情况。由于存在速度色散现象,NI...
- 分析曲面的光学性质,检查曲面的连续性和质量。 ##### 2. 偏差分析 (Deviation) - 比较两个曲面之间的差异,评估它们之间的偏差程度。 #### 五、曲面编辑 ##### 1. 编辑特征参数 (Edit Feature Parameters) - ...