如何从另一个类的一个子类"刷新"一个类的集合(对不起,标题不好)



我会尽力解释我正在处理的问题。所以我有一个子类";WeaponCarrier;我有一把武器。

  • 那个"武器;是一个类;void setHolder(WeaponCarrier持有者({this.holder=holder}
  • ";武器;类也有一个";WeaponCarrier getHolder(({return holder;}"方法

我想做的是通过WeaponCarrier中的一个子类更改武器setHolder/getHolder。类似于:

private class sword extends WeaponCarrier
{
void methodName(){ weapon.setHolder(weapon.holder);} //This code doesn't work but I have tried a lot of things and nothing seemed to work either
}

我想要的结果是:当我"System.out.println(getHolder(";我想从setHolder中获得我通过子类给出的新值。

如果这个问题对你没有任何意义,我就把它记下来。非常感谢您抽出宝贵的时间。

您可以使用抽象类武器并使用其实例。然后使用类似的代码

public abstract class Weapon{
Weaponcarrier holder;
String name;
//this creates the name var for the weapon
public Weapon(String name){
this.name = name;
//this sets the name that gets coded for the weapon to the instance of the weapon.
}
public void setHolder(weaponCarrier){
this.holder = weaponCarrier;
}
public Weaponcarrier getHolder(){
return this.holder
}
}

然后制作一把剑(例如(

public class Sword extends Weapon{
public Sword(){
super("Sword"/*the name*/);
}

现在制作一个列表,将所有武器添加到所谓的武器列表中,并将所有武器都添加到该列表中。然后创建一个函数,在调用时返回武器的类。然后,您可以使用该类来调用该实例的函数。这是可扩展的,包括你想要使用的所有武器。如果你不理解第二部分,你可以问,我会告诉你代码。

然后,您可以在括号之间输入要设置的值,它会将其设置为该值。还要确保你放了正确的新,因为现在它正在将自己设置为当前的

此代码不起作用。。。

如果我们仔细看这一行。。。

void methodName(){ weapon.setHolder(weapon.holder);}

那么我们将看到它没有意义,因为weapon对象在其字段上设置的值等于其当前值。它永远不会改变任何

如果您将此行更改为更有用的内容,那么您可以像重写任何其他方法一样重写getter或setter。

理想情况下,您应该通过单元测试来覆盖您的代码,以确保它的工作方式恰好您如何取消配置它。

相关内容

最新更新