【发布时间】:2020-06-30 11:05:34
【问题描述】:
有人可以帮忙吗。
我想创建一个工厂,它会返回特定的类。
上线有问题 - filterFactory.getFilter(myColumn.getType()).setMin(5);
出现错误:无法解析“对象”中的方法“setMin”
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);
}
}
【问题讨论】:
-
有什么问题?你有什么错误吗?添加整个消息/堆栈跟踪。
-
无法解析“对象”中的方法“setMin”
-
setMin 是超类 ColumnFilter 的一部分,不应该定义为
<T extends ColumnFilter>吗?