如果我不能修改方法(只能修改和类) ,如何Factory.create
调用构造函数?Task.<init>(SubType)
Factory.create
Task
SubType
public class Test {
public static void main(String[] args) {
Factory.create(new SubType());
// OUTPUT:
// task instanceof SubType: true
// callable (PROBLEM: I want SubType constructor to be invoked)
}
public static class SubType implements Callable {
@Override
public Object call() throws Exception {
return null;
}
}
public static class Task {
private Callable callable;
private SubType subType;
public Task(SubType subType) {
System.out.println("Subtype");
this.subType = subType;
}
public Task(Callable callable) {
System.out.println("callable");
this.callable = callable;
}
}
public static class Factory {
// If change method argument type to SubType it will invoke
// Task.<init>(SubType) constructor, but I can't modify it
public static Task create(Callable task) {
System.out.println("task instanceof SubType: " + (task instanceof SubType));
return new Task(task);
}
}
}