Java 如何在生成器模式中使用泛型

Java 如何在生成器模式中使用泛型,java,generics,Java,Generics,我试图将生成器模式与泛型结合使用,但我不知道如何将其组合在一起。我需要一些帮助和正确语法的解释。我的代码,以及我尝试过的内容 public class LanguageMatcher<T, S> { // Code public final static class Builder<T, S> { // Code } } Usage (Error): new LanguageMatcher<MyClass, YourC

我试图将生成器模式与泛型结合使用,但我不知道如何将其组合在一起。我需要一些帮助和正确语法的解释。我的代码,以及我尝试过的内容

public class LanguageMatcher<T, S> {

    // Code
    public final static class Builder<T, S> {

        // Code
    }
}

Usage (Error):

new LanguageMatcher<MyClass, YourClass>().Builder<MyClass, YourClass>()....
公共类LanguageMatcher{
//代码
公共最终静态类生成器{
//代码
}
}
用法(错误):
新建LanguageMatcher().Builder()。。。。

类型参数不会从外部类继承到静态嵌套类。因此
Builder
实际上与
LanguageMatcher
具有不同的
T
S

因此,在尝试使用
LanguageMatcher
限定
Builder
时,不需要类型参数。由于
Builder
类是
static
,因此不需要
LanguageMatcher
的实例来实例化
Builder

LanguageMatcher.Builder<MyClass, YourClass> lm =
    new LanguageMatcher.Builder<MyClass, YourClass>();
LanguageMatcher.Builder lm=
新建LanguageMatcher.Builder();

试试这个:
newlanguageMatcher.Builder()
在这样的问题上遭到否决很有趣。@LuckyLuke即使不是这样也不会受到恶棍的攻击:/不过有一件事:LanguageMatcher类是泛型的,因为它实现了一个泛型接口(之前的代码中没有显示)。我需要用特殊的方式处理它吗?我的意思是,当我将builder对象传递给私有构造函数时,LanguageMatcher上是否设置了T和S?在私有构造函数中,可以将a
builder
作为参数。这样,您就可以使用
生成器
创建
LanguageMatcher
。Java编译器将从
Builder
对象的泛型类型参数推断泛型类型参数。如何了解有关泛型类型参数推断的更多信息?我不完全明白怎么做,为什么。有很多。