[英]constructor problem in java
public class StateQueryFilter extends FieldQueryFilter {
// private static final Log LOG = LogFactory.getLog(RecommendedParser.class.getName());
public StateQueryFilter() {
super("state", 5f);
super("city", 5f);
super("notdirectory", 5f);
//LOG.info("Added a state query");
}
}
它报告:
Constructor call must be the first statement in a constructor
有办法使它起作用吗?
您只能在构造函数中调用一次super
,并且它必须是第一行。
在执行操作时多次调用它甚至没有意义。 调用super
不会创建新对象; 它只是让超类初始化其字段。 您是否真的要尝试多次初始化同一字段? 您可能正在尝试创建三个单独的对象,但这不是这样做的方法。
另请参见Java教程中的使用关键字super
。
不。 您尝试构造3次对象,逻辑上有缺陷。
我发现构造函数调用丑陋的二传手。
另一种选择是让构造函数接受参数。
public StateQueryFilter() {
super(/*state*/ 5, /* city */ 5, /*notdirectory*/ 5);
//LOG.info("Added a state query");
}
但是看起来你应该做类似的事情
public class StateQueryFilter extends FieldQueryFilter {
private final String city;
private final String state;
private final boolean noDirectory;
public StateQueryFilter(String city, String state, boolean noDirectory) {
this.state = state;
this.city = city;
this.notDirectory = notDirectory;
}
}
// later
FieldQueryFilter filter = new StateQueryFiler("Los Angeles", "California", true);
顺便说一句:不要使用浮点值,它们几乎永远不是最好的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.