这就是我想要实现的目标:
public class cls1{
public cls1(){} //constructor for the sending class
String name = "foo"; //String I wish to access
public String sentName(){ //Method to access the string outside
return name;
}
}
public class cls2{ //Class where I wish to access the name
public String gotName(Object obj){ //Method where I wish to call the cls1 instance
String recvName;
if(obj.getClass()==cls1.class){
recvName = obj.sentName(); //THE PROBLEM
}
return recvName;
}
}
我确实知道 obj
在运行时之前不会具有 cls1 的方法和变量,因此不允许该行进行编译。有没有办法实现这个目标?
附注我还尝试在 cls2
中创建 cls1
的实例:
cls1 cls1Inst;
obj=cls1Inst;
cls1Inst.sentName();
但这给出了一个空指针异常,也许是因为我试图访问 cls1 的方法而不实际创建它的实例(我对空指针不太清楚,请原谅我的愚蠢)。
如有任何帮助,我们将不胜感激。
最佳答案
您无法在对象类对象上调用sentName()。您需要首先将其类型转换为 cls1 类。
public class cls2{ //Class where I wish to access the name
public String gotName(Object obj){ //Method where I wish to call the cls1 instance
String recvName;
if(obj.getClass()==cls1.class){
cls1 cls1Obj = (cla1)obj;
recvName = cls1Obj.sentName(); //THE PROBLEM
}
return recvName;
}
}
关于java - 如何使用作为另一个类的函数的参数访问的对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55625142/