【发布时间】:2012-02-18 22:02:25
【问题描述】:
我在电话面试中被问到以下问题:
给定以下类定义:
public class ClassA {
public ClassA(int x) {
// do some calculationand initialize the state
}
}
及其使用随机整数生成器初始化超类的子类。
public class ClassB extends ClassA {
public ClassB() {
super(StaticUtilityClass.someRandomIntegerValGenerator())
}
}
您需要截取 x 的值(由 someRandomIntegerValGenerator 生成的随机 int)并将其存储在 ClassB 成员中。 ClassA 不能更改。 我最终不知道如何做到这一点,因为 ClassB 构造函数中的第一个调用需要调用 super()。在调用 super() 之前,ClassB 没有状态,并且 someRandomIntegerValGenerator 生成的值不能分配给任何 ClassB 成员。我唯一的方向是使用 线程本地 但我认为这应该是一些更简单的解决方案。
有什么想法吗?
【问题讨论】:
标签: java constructor