gpt4 book ai didi

java - 如何添加到main中的数组?

转载 作者:行者123 更新时间:2023-11-30 01:44:03 24 4
gpt4 key购买 nike

我创建了一个我想从 main 控制的数组。我的代码可以运行,但我不知道如何将整数添加到主类的数组中。另外,由于每个 ConcreteSubject 都有自己的存储数组,我如何更改它以将它们全部存储在同一个数组中?

public class ConcreteSubject extends AbstractSpy
{
private AbstractSpy[] spies = new AbstractSpy[10];
private int i = 0;

public void addSpy(AbstractSpy s) {
if (i < spies.length) {
spies[i] = s;
System.out.println("spy added at index " + i);
i++;
}
}
}

public class TestClass
{
public static void main(String[] args) {
ConcreteSubject cs = new ConcreteSubject();
AbstractSpy spies = new AbstractSpy() {
@Override
public void addSpy(AbstractSpy spies) {
}
};

cs.addSpy(cs);
spies.addSpy(spies);
}
}

最佳答案

看来你的程序逻辑有点无聊。这一点特别没有多大意义:

        ***AbstractSpy spies = new AbstractSpy() {
@Override
public void addSpy(AbstractSpy spies) {
}
};

cs.addSpy(cs);
***spies.addSpy(spies);

您正在做的是创建两个 AbstractSpy 实例,一个名为 cs ,另一个名为 spies。在最后一行,您将 spies 添加到其自身!这对你根本没有帮助。

请注意,AbstractSpy 是您设置中最细粒度的单元 - 它不应该有 addSpy() 方法及其自己的内部数组,它应该是这样的这是添加其他数组中的!

这是相同的代码,但做了一些清理:

public abstract class AbstractSpy { }
public class ConcreteSpy extends AbstractSpy { }

public class ConcreteSubject {
private AbstractSpy[] spies = new AbstractSpy[10];
private int i = 0;

public void addSpy(AbstractSpy spy) {
if (i < spies.length)
{
spies[i] = spy;
System.out.println("spy added at index " + i);
i++;
}
}
}

public class TestClass {
public static void main(String[] args) {
ConcreteSubject cs = new ConcreteSubject();
AbstractSpy spy = new ConcreteSpy();
cs.addSpy(spy);
}
}

这里最大的区别是 ConcreteSpyAbstractSpy 的实现,您可以将其添加到 ConcreteSubject 的 spy 数组中。我认为您可能对 Java 的坚持感到困惑,即除非您提供从抽象类继承的匿名类,否则您不能自行创建抽象类的实例。

关于java - 如何添加到main中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58842688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com