Java 通用方法<&燃气轮机;类型参数
在图表库中,我发现了以下类:Java 通用方法<&燃气轮机;类型参数,java,generics,Java,Generics,在图表库中,我发现了以下类: public class SeriesBuilder<T> { private T[] data; private SeriesBuilder() { } public static SeriesBuilder<?> get() { return new SeriesBuilder(); } public SeriesBuilder<T> withDat
public class SeriesBuilder<T> {
private T[] data;
private SeriesBuilder() {
}
public static SeriesBuilder<?> get() {
return new SeriesBuilder();
}
public SeriesBuilder<T> withData(T... data) {
this.data = data;
return this;
}
public Series<T> build() {
Series<T> series = new Series<T>();
series.setData(data);
return series;
}
}
公共类序列生成器{
私有T[]数据;
私有序列生成器(){
}
公共静态序列生成器get(){
返回新的序列生成器();
}
带数据的公共序列生成器(T…数据){
这个数据=数据;
归还这个;
}
公共系列构建(){
系列=新系列();
系列。设置数据(数据);
返回序列;
}
}
使用代码:
SeriesBuilder.get()
.withData(<<<<<???>>>>)
.build()
SeriesBuilder.get()
.带数据(
由于类型的原因,我无法找到如何使用该类。我找不到填充签名的参数。如何使用该参数
您几乎无法使用它。除了通过SeriesBuilder.get()之外,无法获取SeriesBuilder
实例
,您通过这种方式获得的实例的类型参数是未知的——事实上,get
实际实例化的是原始类型。如果您愿意,您应该能够生成一系列null
s
甚至不能有任何SeriesBuilder
的子类(这可能更有用),因为它唯一的构造函数是私有的
不必说得太详细,这个SeriesBuilder
是一个非常讨厌的东西。对于更喜欢工厂方法(例如SeriesBuilder.get()
)有一个理由超过构造函数,但该实现非常糟糕。除了类型参数问题外,它不会将结果对象初始化为有效状态。这必须通过withData()
单独完成,那么get()
的目的是什么呢
我倾向于认为,无论是谁写的,都是在寻找通过withData()
上的这个变体可以更好地表达的东西:
publicstaticseriesbuilderwithdata(T…data){
SeriesBuilder=新的SeriesBuilder();
builder.data=数据;
返回生成器;
}
你可以把它当作
SomeType item1 = /* value */;
SomeType item2 = /* value */;
SomeType item3 = /* value */;
Series<SomeType> series =
SeriesBuilder.withData(item1, item2, item3)
.build();
SomeType item1=/*value*/;
SomeType item2=/*值*/;
SomeType item3=/*值*/;
系列=
SeriesBuilder.withData(项目1、项目2、项目3)
.build();
null
是唯一有效的参数。编写该SeriesBuilder的人不知道如何使用泛型。签名应该是public static SeriesBuilder get(){return new SeriesBuilder();}
@Eklavya注意构造函数是私有的。我被迫使用get()。
SomeType item1 = /* value */;
SomeType item2 = /* value */;
SomeType item3 = /* value */;
Series<SomeType> series =
SeriesBuilder.withData(item1, item2, item3)
.build();