当前位置: 首页 > 面试题库 >

使用类构造函数处理Java对象引用

华心思
2023-03-14
问题内容

这是我无法完成的考试问题。

如何通过仅在MyClass构造函数中编辑代码来获取以下Java代码以打印false?

public class MyClass{        
    public MyClass(){
    }

    public static void main(String[] args) {            
        MyClass m = new MyClass();
        System.out.println(m.equals(m));
    }
}

不允许您覆盖equals方法或更改main方法中的任何代码。该代码必须在程序不崩溃的情况下运行。

根据我的研究,实例化类时不能将Java对象引用设置为null。所以我正式陷入了困境。


问题答案:

太难了!

public MyClass() {
    System.setOut(new PrintStream(new FilterOutputStream(System.out) {
        @Override
        public void write(byte[] b, int off, int len) throws IOException {
            if(new String(b).contains("true")) {
                byte[] text = "false".getBytes();         
                super.write(text, 0, text.length);
            }
            else {
                super.write(b, off, len);
            }
        }
    }, true));
}

或Paul Boddington的简化版本:

PrintStream p = System.out; 
System.setOut(new PrintStream(p) { 
    @Override
    public void println(boolean b) { 
        p.println(false); 
    }
});

或是AJ Neufeld的更简单建议:

System.setOut(new PrintStream(System.out) { 
    @Override
    public void println(boolean b) { 
        super.println(false); 
    }
});


 类似资料:
  • 这是一道我无法完成的试题。 如何仅通过编辑MyClass构造函数中的代码来让下面的java代码打印false? 不允许重写equals方法,也不允许更改main方法中的任何代码。代码必须在程序不崩溃的情况下运行。 根据我的研究,在实例化类时,不能将Java对象引用设置为null。所以我正式被难倒了。

  • 类 类是对某一事物的抽象描述,具体地讲,类是C++中的一种构造的数据类型。它即可包含描述事物的数据,又可包含处理这些数据的函数,类在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义类。 定义类 定义一个类的一般格式为: class 类名{     private:         成员表1;     public:         成员表2;     protected:     

  • 在hibernate的xml方法中,创建hibernate SessionFactory对象时使用

  • 问题内容: 我有这样的事情: 如您所见,超类的init方法是抽象的,并在创建对象后由构造函数自动调用。 当我需要创建这种类型的对象且其结构不会及时更改时,我很好奇我是否会遇到这样的代码问题。 有什么更好的办法吗?它可以在Java中运行,但是可以在C ++和ActionScript中运行吗? 谢谢你的答案。 问题答案: 请勿从构造函数中调用过多的方法。 引用 有效Java 2nd Edition,条

  • 生成类对象时,其成员可以用类的构造函数初始化。构造函数是与类同名的成员函数。程序员提供的构造函数在每次生成类对象(实例化)时自动调用。构造函数可以重载.提供初始化类对象的不同方法。数据成员应在类的构造函数中初始化或在生成对象之后设置其数值。 常见编程错误 6.7 类的数据成员只能在类定义中初始化。 常见编程错误 6.8 试图声明构造函数的返回类型和返回植是个语法错误。 编程技巧 6.5 适当时候(

  • 问题内容: 给出以下代码: 我的IDE没有给我任何错误。也就是说,直到我尝试构建项目并运行它。当我这样做时,它给了我一个看起来像这样的编译器错误: 现在,我得到了错误消息,如果foo()是静态的,则不会发生这种情况。没错,这仅在foo()是实例方法的情况下才会发生。并且仅当LocalFoo是实例方法中的本地类时才发生,并且仅当使用构造函数引用时(即从不使用常规方法引用)才发生。 更重要的是,如果我