我不知道如何给它一个更好的标题,因为我真的不知道在Java中这种模式是什么。

现在,我有一个带有此签名的方法:

public Directory getDirectory(Class<? extends Directory> type) { ... }


您这样称呼它:

MyDirectory directory = (MyDirectory)getDirectory(MyDirectory.class);


对类型的约束确保MyDirectory必须从Directory派生。

我真正想做的是避免强制转换并减少所需的代码量。在C#中,您可以说:

MyDirectory directory = getDirectory<MyDirectory>();


有没有办法做到这一点或Java中的类似方法?自1.4版以来,我还没有编码任何Java代码!

最佳答案

public <T extends Directory> T getDirectory(Class<T> type) { ... }

MyDirectory directory = getDirectory(MyDirectory.class);

10-08 20:25