首页 > 解决方案 > 如何使用作为另一个类函数的参数访问的对象的函数?

问题描述

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

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 的方法和变量,因此不允许该行编译。有没有办法做到这一点?

PS我还尝试创建cls1in的实例cls2

cls1 cls1Inst;
obj=cls1Inst;
cls1Inst.sentName();

但这给出了一个空指针异常,可能是因为我试图访问 cls1 的方法而不实际创建它的实例(我对空指针不是很清楚,请原谅我的愚蠢)。

任何帮助,将不胜感激。

标签: javaobjectmethods

解决方案


您不能在对象类对象上调用 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;
  }
}

推荐阅读