Java 跨子类的标准化构造函数?

Java 跨子类的标准化构造函数?,java,abstract-class,Java,Abstract Class,我有一个抽象类AbstractClass和两个扩展它的非抽象类:A和B。A和B都有接受字符串参数的构造函数。我也有一种方法,在课堂上你不能接受。没有办法要求构造函数具有任何参数 但是,您传递了一个函数您不能传递。没有办法要求构造函数具有任何参数 然而,你通过了一个你不能通过的函数。没有办法要求,你不能。没有办法要求它。这种方法也有助于减少反射样板的数量,就像你可以说A::new而不是checked Exception一样。它也在编译时检查,而不是在运行时检查。这种方法也有助于减少反射样板的数量,

我有一个抽象类AbstractClass和两个扩展它的非抽象类:A和B。A和B都有接受字符串参数的构造函数。我也有一种方法,在课堂上你不能接受。没有办法要求构造函数具有任何参数


但是,您传递了一个函数您不能传递。没有办法要求构造函数具有任何参数


然而,你通过了一个你不能通过的函数。没有办法要求,你不能。没有办法要求它。这种方法也有助于减少反射样板的数量,就像你可以说A::new而不是checked Exception一样。它也在编译时检查,而不是在运行时检查。这种方法也有助于减少反射样板的数量,正如您可以说A::new没有检查异常。它也在编译时检查,而不是在运行时检查。
public abstract class AbstractClass {
    // do stuff
}

public class A extends AbstractClass {
    public A(String str) {
        // do stuff
    }
}

public class B extends AbstractClass {
    public B(String str) {
        // do stuff
    }
}

// this is stuff in other places
public void instantiateClass(Class<? extends AbstractClass> obj) {
    AbstractClass object = obj.newInstance("blah"); // Error: Expected 0 arguments but found 1
    // do stuff
}
instantiateClass(A.class);
instantiateClass(B.class);
public void instantiateClass(Function<? super String, ? extends AbstractClass> fn) {
    AbstractClass object = fn.apply("blah");
    // do stuff
}

instantiateClass(A::new);
instantiateClass(B::new);
public class C extends AbstractClass {
    public C() {
        // do stuff
    }
}