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

标签 java arrays oop

我创建了一个我想从 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/

相关文章:

java - 是否可以从 RPG 重新使用在另一个 OS/400 作业中创建的 JVM?

java - 数组有固有的 hashCode() 吗?

java - 为什么这个方法返回一个输出?

ruby-on-rails - Rails 代码段解释

java - 在没有访问者模式的情况下避免类型自省(introspection)

java - 使用 Redis 进行任务调度

java - JUnit TestClass 无法识别类

java - 使用 Java Graphics 在白色上绘制黄色

javascript - jquery:将分隔的数组放在一个数组中而不连接它们

arrays - 无法在 bash 中打印数组值