高分求解一个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();
用反射机制可以解决这个问题吗?最好是给一个例子给我. 展开
现在有另一个类B,在B中有一个A的对象a,和一个String str ="abcd123";
问如何在B中通过str这个变量来调用a的get方法,比如说当str="aaa";
则在B中就调用a.getAaa();当str="bbb";就调用a.getBbb();
用反射机制可以解决这个问题吗?最好是给一个例子给我. 展开
3个回答
展开全部
下面的代码可以实现你题目中的要求:
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等类,你会明白的。
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等类,你会明白的。
展开全部
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);
}
}
这是反射的一个 例子
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);
}
}
这是反射的一个 例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
nicky_zs的答案应该是正解了,学习学习。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询