Java 如何截获超类构造函数参数?

Java 如何截获超类构造函数参数?,java,constructor,Java,Constructor,在电话采访中,我被问到以下问题: 给定以下类定义: public class ClassA { public ClassA(int x) { // do some calculationand initialize the state } } 及其子类,该子类使用随机整数生成器初始化一个超类 public class ClassB extends ClassA { public ClassB() { super(StaticUtilityCl

在电话采访中,我被问到以下问题:

给定以下类定义:

public class ClassA {
    public ClassA(int x) {
       // do some calculationand initialize the state
    }
}
及其子类,该子类使用随机整数生成器初始化一个超类

public class ClassB extends ClassA {
    public ClassB() {
       super(StaticUtilityClass.someRandomIntegerValGenerator())
    }
}
您需要截取x的值(由SomeRandomIntegerGenerator生成的随机整数)并将其存储在ClassB成员中。ClassA不能更改。 我最终不知道如何做到这一点,因为ClassB构造函数中的第一个调用需要是对super()的调用。在调用super()之前,ClassB没有状态,someRandomIntegerValGenerator生成的值不能分配给任何ClassB成员。我唯一的方向就是使用 线程本地 但我认为这应该是更简单的解决办法

有什么想法吗?

这个怎么样:

public class ClassB extends ClassA {
    public ClassB() {
       this(StaticUtilityClass.someRandomIntegerValGenerator());
    }

    private ClassB(int x) {
        super(x);
        // Can access x here, e.g.:
        this.x = x;
    }


    private int x;
}

“这个”不应该是“超级”吗?只是为了满足任务条件?
x
并没有丢失,
this
构造函数链接到同一类中的另一个构造函数,允许您使用x,因为它存储在一个参数中。