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?在私有构造函数中,可以将abuilder
作为参数。这样,您就可以使用生成器创建LanguageMatcher
。Java编译器将从Builder
对象的泛型类型参数推断泛型类型参数。如何了解有关泛型类型参数推断的更多信息?我不完全明白怎么做,为什么。有很多。