Java谜题6:鸡与蛋


先有鸡还是蛋?
如果每一个鸡蛋都从鸡身上得到了这个问题的秘密答案,那又会怎样呢?

package chicken;
 
public class Egg {
    final Object first;
     
    public Egg(Chicken mom) {
        first = mom.first;
    }
}

如果这样,每只鸡也都从鸡蛋中得到了答案,并将其代代相传。那么我们也可以问问任何一只鸡!

package chicken;
 
public class Chicken {
    final Object first;
     
    public Chicken(Egg egg) {
        first = egg.first;
    }
     
    public void ask() {
        // The goal is to reach this line
        System.out.println("First there was the " + first);
    }
}

现在您需要弄清楚的是如何创建蛋生鸡鸡生蛋这个问题。
这是天真的尝试,会引发NullPointerException。您可以对其进行编辑以使其起作用吗?

package creator;
 
import chicken.Chicken;
 
public class Creator {
    public static void main(String args) {
        new Chicken(null).ask();
    }
}

与通常应用的规则和系统相同:必须在启用安全管理器的情况下运行(-djava.security.manager)。您的解决方案必须在creator包中。