[英]How can I call a constructor after statements?
我有這個calss KeywordFilter。 我希望接受關鍵字的構造函數創建一個列表,將該關鍵字添加到列表中,然后使用list參數調用構造函數。 我怎樣才能做到這一點? 因為據我所知,應該首先調用構造函數。
public class KeywordFilter implements Filter {
private List<String> filteringKeywords;
public KeywordFilter(List<String> filteringKeywords) {
this.filteringKeywords = filteringKeywords;
}
public KeywordFilter(String keyword) {
List<String> filteringKeywords = new ArrayList<String>();
filteringKeywords.add(keyword);
this(filteringKeywords);//This makes a compilation error
}
}
直接創建列表:
public KeywordFilter(String keyword) {
this(new ArrayList<String>(Arrays.asList(keyword)));
}
通常,您可以將構成列表的代碼放在單獨的函數中(最好,但不一定是static
):
private static List<String> makeFilterKeywords(String keyword) {
List<String> filteringKeywords = new ArrayList<String>();
filteringKeywords.add(keyword);
return filteringKeywords;
}
public KeywordFilter(String keyword) {
this(makeFilterKeywords(keyword));
}
這應該有幫助
public KeywordFilter(String keyword) {
this(Collections.singletonList(keyword));
}
public KeywordFilter(List<String> filteringKeywords) {
this.filteringKeywords = filteringKeywords;
}
public KeywordFilter(String keyword) {
this(((List<String>)Arrays.asList(keyword));
}
public KeywordFilter(String keyword) {
this(Arrays.asList(keyword));
}
但這會返回由指定數組支持的固定大小的列表 ,而沒有add()
或remove()
支持。
這也適用於varargs
public KeywordFilter(String... keywords) {
this(Arrays.asList(keywords));
}
您可以使用KeyWord
創建ArrayList
,然后讓另一個方法將新列表追加到現有列表(您在構造函數中僅使用關鍵字創建的列表)。
像這樣:
public class KeywordFilter implements Filter {
private List<String> filteringKeywords;
public KeywordFilter(String keyword) { //Consctructor
filteringKeywords = new ArrayList<String>();
filteringKeywords.add(keyword);
}
public void appendList(List<String> filteringKeywords) { //new method
filteringKeywords.addAll(filteringKeywords);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.