5

次のようなPersonFactoryインターフェイスがあります。

@FunctionalInterface
public interface PersonFactory<P extends Person> {
    P create(String firstname, String lastname);

    // Return a person with no args
    default P create() {
        // Is there a way I could make this work?
    }
}

Personクラス:

public class Person {
    public String firstname;
    public String lastname;

    public Person() {}

    public Person(String firstname, String lastname) {
        this.firstname = firstname;
        this.lastname = lastname;
    }
}

次のように s をインスタンス化できるようにしたいPerson:

PersonFactory<Person> personFactory = Person::new;

Person p = personFactory.create(); // does not work
Person p = personFactory.create("firstname", "lastname"); // works

の署名を照合することにより、Java コンパイラに適切なコンストラクタを自動的に選択させる方法はありますPersonFactory.create()か?

4

1 に答える 1