学习笔记之反射机制

[b]Java反射机制具备的功能:[/b]

在运行时判断任意一个对象所属的类。
在运行时构造任意一个类的对象。
在运行时判断任意一个类所具有的成员变量和方法。
在运行时调用任意一个对象的方法

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Serializable),也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods


[b]看例子:InvokeTest.java[/b]

[code]package org.kangsg219.Reflection;

import java.lang.reflect.Method;

public class InvokeTest
{
public int add(int a, int b)
{
return a + b;
}

public String hello(String username)
{
return "hello " + username;
}

public static void main(String[] args) throws Exception
{
//正常调用
InvokeTest tester=new InvokeTest();
int addresult=tester.add(10, 20);
System.out.println(addresult);
String msg=tester.hello("kangsg219");
System.out.println(msg);

//通过发射机制来调用
Class<?> classType = InvokeTest.class;
Object invokeTest = classType.newInstance();

// 调用InvokeTester对象的add()方法
Method addMethod = classType.getMethod("add", new Class[] { int.class, int.class });
Object result = addMethod.invoke(invokeTest, new Object[] { new Integer(10), new Integer(20) });
System.out.println((Integer) result);

// 调用InvokeTester对象的hello()方法
Method echoMethod = classType.getMethod("hello", new Class[] { String.class });
result = echoMethod.invoke(invokeTest, new Object[] { "kangsg219" });
System.out.println((String) result);
}
}[/code]

[b]运行结果:[/b]

30
hello kangsg219
30
hello kangsg219
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值