为了避免代码中的重复,是否有方法将所选代码提取到单独的方法中?
class Builder
{
private final List< UnitIf > unit = new ArrayList<>();
private final List< TimeIf > time = new ArrayList<>();
public Builder withUnit( final UnitIf aUnit )
{
//Extract to method
if( aUnit != null )
{
unit.add( aUnit );
}
return this;
//----------------
}
public Builder withTime( final TimeIf aTime )
{
//Extract to method
if( aTime != null )
{
time.add( aTime );
}
return this;
//----------------
}
}我的目标是通过消除重复来简化代码。但是代码的各个部分使用不同的数据类型。
发布于 2022-11-25 21:10:11
添加一种方法
public <T> Builder addIfNonNull(List<T> dst, T x)
{
if (x != null) {
dst.add(x);
}
return this;
}并实现类似的withUnit
public Builder withUnit( final UnitIf aUnit )
{
return addIfNonNull(unit, aUnit);
}并以同样的方式改变withTime。
非通用版本
如果不希望它是泛型方法,只需省略类型参数T并将x的类型更改为Object
public Builder addIfNonNull(List dst, Object x)
{
if (x != null) {
dst.add(x);
}
return this;
}在内部,Java编译器将List<T>编译成List。我想这叫做“类型擦除”。
https://stackoverflow.com/questions/74576860
复制相似问题