【问题标题】:(JAVA) Initializing object - calling method in one line(JAVA) 初始化对象 - 一行调用方法
【发布时间】:2015-04-04 02:43:05
【问题描述】:
public perform Ulti (Location origin, int number) { 

        Map i = new Map(origin, i.getDestination(), number);

} 

Map的构造函数是(Location n, Location m, int k);

我的问题是,我不知道目的地,但 Map 中有一个名为 getDestination() 的方法。我知道输入第一个参数的来源,我该如何使用新创建的对象的方法?

注意:地图对象不能为空; //所以我不确定我可以使用什么其他占位符

【问题讨论】:

  • 这不起作用,因为 Map i 未初始化。无论如何,如果您在 i 中有一个方法,要获取目的地,为什么需要将目的地作为参数传递给 i?你不能像 this.getDestination() 这样在 Map 构造函数中调用 getDestination() 吗?
  • 那么你的Map 是一个具体的类?
  • (这不能工作,因为i 还没有在作用域内。别介意它没有被初始化;这会导致类似“找不到符号 .. 变量 i".)

标签: java variables methods null


【解决方案1】:

如果你有一个保存目的地的变量,那么你必须先设置它

例如:

map i = new map(); 
i.setDistination("----");
String distination = i.getDistination();

但在您的示例中,您可以简单地键入一个目标或从其他对象获取它。

【讨论】:

  • 这不起作用 - 地图有 3 个参数。 (出发地、目的地、号码)。我不需要设置目的地,目的地是在 Map 类中预定义的。我需要 getDestination 作为对象的参数。
  • 如果没有设置目的地,那你要返回什么!!一个例子:你可以创建一个不接收目的地的构造函数,找到目的地然后获取目的地
【解决方案2】:

您可以在 Map 类中执行以下操作 -

class Map{

   Location origin;
   Location destination;
   int number;

   //create a no argument constructor so that your Map can 
   // be created without any constructor whenever required
   Map(){

   }

   //create a constructor with two argument
   Map(Location origin, int number){
      this.origin = origin;
      this.number = number;
   }  


  //getter and setter methods.

}   

现在你可以像这样创建Map 实例/对象 -

Map i = new Map(origin, number);
Location m = // some code for generating Location as destination
i.setDestination(m);

【讨论】:

  • 谢谢,我不知道你可以创建一个空的构造函数。似乎看起来不错。再次感谢。
【解决方案3】:

你不能在没有创建对象的情况下调用对象的方法。如果可以的话,传递对象本身已经具有的值是没有意义的。目的地是什么?如果您有其他方法可以访问它,只需向 Map 添加一个空的构造函数。 像这样

public class Map{
     public Map(){

     }
     //Rest of code
}

现在您可以创建没有目的地的对象: 地图 i = 新地图(); 然后设置目的地。

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 2016-09-30
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多