Java 难题访问 main 的参数而不传入它们

标签 java

我有一个 Java 难题,我无法解决。给定以下三个类:

public class A1 {
    protected boolean foo() {
        return true;
    }
}
public class B1 extends A1 {
}
public class C1 {
    private static boolean secret = false;

    public boolean foo() {
        secret = !secret;
        return secret;
    }

    public static void main(String[] args) {
        C1 c = new C1();
        for (int i = 0; i < args.length; i++) {
            c.foo();
        }
        A1 a = new B1();
        if (a.foo() == c.foo()) {
            System.out.println("success!");
        }
    }
}

我需要完成 B1 类,但是我想要更改类 A1C1 或添加新文件,这样对于至少一个参数,C1 将始终打印字符串“success!”。

我认为我需要覆盖 A1 类的方法 foo(), 并通过从 C1 上的主函数获取参数数量来重写它,以获得正确的返回值。

我的问题是我不知道该怎么做。 (请记住,我不允许通过编写 A1 a = new B1(args.length) 而不是 A1 a = new B1() 来解决这个问题。那' d太容易了。)

任何关于如何做到这一点的建议,甚至是完全不同的解决方案,我们都将不胜感激!

最佳答案

由于 secret 是静态的,您可以创建一个新的 C1 并在其上调用 foo,只需确保将结果反转为嗯:

class B1 extends A1 {

    public boolean foo() {
        return !(new C1().foo());
    }
}

关于Java 难题访问 main 的参数而不传入它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580234/

相关文章:

java - 如何在 JPanel 上添加多个图层

java - 如何更改 GWT 的小部件 CSS 值?

java - 我有一个菜单代码,例如游戏菜单,但单击按钮时不会转到页面

java - Internet 上的 Java 聊天应用程序 | ConnectException(连接超时)

java - Facebook4j 访问 token 错误 2500

java - Java 接口(interface)如何模拟多重继承?

java - 访问和显示数据存储中的数据

java - JAVA中提取特定字符串

Java 泛型转换,非直接

java - StringTokenizer 使用