高分求解一个java编程问题

已知有一个类A,A中有若干私有成员变量,例如存在一个praviteStringabcd123;和相关的get方法;例如publicStringgetAbcd123();现... 已知有一个类A,A中有若干私有成员变量,例如存在一个pravite String abcd123;和相关的get方法;例如public String getAbcd123();
现在有另一个类B,在B中有一个A的对象a,和一个String str ="abcd123";
问如何在B中通过str这个变量来调用a的get方法,比如说当str="aaa";
则在B中就调用a.getAaa();当str="bbb";就调用a.getBbb();
用反射机制可以解决这个问题吗?最好是给一个例子给我.
展开
 我来答
nicky_zs
2008-01-12 · TA获得超过654个赞
知道小有建树答主
回答量:407
采纳率:0%
帮助的人:408万
展开全部
下面的代码可以实现你题目中的要求:

import java.lang.reflect.Method;

class A {
private String abcd123 = "String in A";

public String getAbcd123() {
return abcd123;
}
}

public class B {

public static void main(String[] args) throws Exception {
String str = "getAbcd123";
A a = new A();

Class c = a.getClass();
Method m = c.getMethod(str, null);
String abcd123 = (String)m.invoke(a, null);

System.out.println(abcd123);
}
}

这个在Java里面叫做反射,是JavaBean、可视化编程等技术的基础。你可以去研究一下上面代码中Class,Method等类,你会明白的。
易嘚愁h
2008-01-12 · TA获得超过933个赞
知道小有建树答主
回答量:835
采纳率:0%
帮助的人:0
展开全部
import com.kettas.common.SystemIn;

import static java.lang.System.*;

import java.lang.reflect.*;

public class TestReflection {

public static void main(String[] args) throws Exception {

System.out.print("类名:");

String className=SystemIn.readString();

System.out.print("属性:");

String name=SystemIn.readString();

System.out.print("方法:");

String methodName=SystemIn.readString();

System.out.print("参数:");

String parameter=SystemIn.readString();

Class c=Class.forName(className);

Constructor con=c.getConstructor(String.class);

Object o=con.newInstance(name);

Method m=c.getDeclaredMethod(methodName,String.class);

m.setAccessible(true);

m.invoke(o, parameter);

}

}

class Student{

String name;

public Student(String name){

this.name=name;

}

public void study(String course){

out.println("Student "+name+" study "+course);

}

public void exam(String course){

out.println("Student "+name+" exam "+course);

}

private void zuoBi(String courseName){

out.println("Student "+name+" zuoBi on "+courseName);

}

}

class Teacher{

String name;

public Teacher(String name){

this.name=name;

}

public void prepare(String course){

out.println("Teacher "+name+" prepare "+course);

}

public void teach(String student){

out.println("Teacher "+name+" teach "+student);

}

}

这是反射的一个 例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a2265
2008-01-12 · TA获得超过1908个赞
知道小有建树答主
回答量:1140
采纳率:0%
帮助的人:592万
展开全部
nicky_zs的答案应该是正解了,学习学习。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式