java - 如何使用作为另一个类的函数的参数访问的对象的函数?

标签 java object methods

这就是我想要实现的目标:

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/

相关文章:

java - 我可以序列化 ArrayList 而不序列化其中包含的对象吗?

json - JQ如何将多个对象合二为一

swift - 如何在具有相似名称的 socket 上执行相同的方法,而不是写出数十次非常相似的行?

android - 为什么 oncreate 事件中的方法不起作用?

java - Array.newInstance 上传递的泛型参数出现 nullpointerException

java - @Transactional 上的 MySQL 套接字超时行为

java - 在 java 中打印对象时会发生什么

java - 选择枚举类型时好的方法设计?

java - Java 中的 KeyBinds 在按住 Shift 时会中断

javascript - 如何获取所有 LI UL 元素 ID 值并将它们放入 JavaScript 数组中?