有人能帮忙吗。
我想创建一个工厂,它将返回特定的类。
有问题的行- filterFactory.getFilter(myColumn.getType()).setMin(5);有一个错误:无法解决'setMin‘中的'Object’方法
public enum Columns {
Name(ColumnType.String),
Age(ColumnType.Numeric);
private final ColumnType type;
Columns(ColumnType type) {
this.type = type;
}
public ColumnType getType() {
return type;
}
}
public enum ColumnType {
String,
Numeric
}
public class NumericFilter extends ColumnFilter {
public void setMin(int min) {
System.out.println("min is set" + min);
}
}
public class StringFilter extends ColumnFilter {
public void setFilter(String filter) {
System.out.println("filter is set to:" + filter);
}
}
public class ColumnFilterFactory {
public <T> T getFilter(ColumnType type) {
if (type == null) {
return null;
}
if (type == ColumnType.String) {
return (T) new StringFilter();
} else if (type == ColumnType.Numeric) {
return (T) new NumericFilter();
}
return null;
}
}
public class BasicTest {
public static void main(String[] args) {
Columns myColumn = Columns.Age;
ColumnFilterFactory filterFactory = new ColumnFilterFactory();
filterFactory.getFilter(myColumn.getType()).setMin(5);
}
}发布于 2020-06-30 11:16:36
编译器不可能知道工厂将返回哪种类型,所以您需要给它一点帮助。例如,通过使用中间变量:
NumericFilter nf = filterFactory.getFilter(myColumn.getType());
nf.setMin(5);https://stackoverflow.com/questions/62656033
复制相似问题