Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何将调用方法的对象作为参数传递给该方法?_Java_Oop_Arguments - Fatal编程技术网

在Java中,如何将调用方法的对象作为参数传递给该方法?

在Java中,如何将调用方法的对象作为参数传递给该方法?,java,oop,arguments,Java,Oop,Arguments,在一个名为Ship的类中,我有一个名为PositionSetter的方法。它需要一个Board对象作为参数。每个Board对象都应该调用PositionSetter方法,并将自身作为参数传递。我该怎么做? 代码: 同样,调用上述方法的对象是一个需要将自身作为参数传递的Board对象。欢迎选择我的方法。试试下面的东西 Main.java public class Main { public static void main(String[] args) { Ship ship=new S

在一个名为Ship的类中,我有一个名为PositionSetter的方法。它需要一个Board对象作为参数。每个Board对象都应该调用PositionSetter方法,并将自身作为参数传递。我该怎么做? 代码:

同样,调用上述方法的对象是一个需要将自身作为参数传递的Board对象。欢迎选择我的方法。

试试下面的东西

Main.java

public class Main
{
public static void main(String[] args) {
     Ship ship=new Ship();
     ship.PositionSetter(ship);  // call method inside Ship class
 }
}
public void PositionSetter(Board BattleshipBoard, Ship ship)
{
   //do stuff with BattleshipBoard and ship  
}
Ship.java

public class Main
{
public static void main(String[] args) {
     Ship ship=new Ship();
     ship.PositionSetter(ship);  // call method inside Ship class
 }
}
public void PositionSetter(Board BattleshipBoard, Ship ship)
{
   //do stuff with BattleshipBoard and ship  
}

我不能完全理解你的意思

猜猜看

首先,, 您可以编写一个接口,例如:

public interface ObjInter {
}
public class Board implements ObjInter {
    ...
}
然后,将调用该方法的其他对象必须实现该接口,例如:

public interface ObjInter {
}
public class Board implements ObjInter {
    ...
}
最后,您的方法可以这样写:

public void PositionSetter(Board BattleshipBoard, ObjInter obj) {
    //do stuff with BattleshipBoard and ship  
}

是否满足您的问题?

如果您的Board类中有一个ship对象“shipOne”, 然后,您可以从Board类调用其PositionSetter方法,如下所示:

shipOne.PositionSetter(this,shipOne);
这回答了您的问题。
不过,我有以下建议:
1.我认为将船舶设置在其位置是董事会的责任。我不知道为什么船舶类中有定位器方法。

2.另外,我不理解ship参数的必要性。如果调用方法所传递的是同一个ship,那么您不必传递它。 无论如何,在方法中它都可以作为“this”访问。

3.方法名称应遵循camelCase命名约定。请参阅此处:

祝你战舰游戏好运

使用此。。。如
定位器(本船)代码有问题:应该传递给PositionSetter()方法的缺少的板参数在哪里?