[英]JAVA - create objects from abstract class depending on arguments
我100%肯定以前曾问过这个问题,但我不知道要用谷歌搜索什么:
假设我有一个抽象类Ngram,它基本上只是一个List:
abstract class Ngram {
private List<Word> words = new ArrayList<Word>();
... }
现在是否可以根据参数n创建Unigram,Bigram ...子类的对象? 像这样:
int n;
for(Word w : Sentence.getWordList()) {
Ngram ngram = new Ngram(n);
... }
因此,Ngram的构造函数将如下所示:
Ngram(int n) {
if(n==1) : //create Object of Type Unigram, let ngram refer to this object
}
我试图返回一个新的Unigram,但这不起作用。 我想让抽象超类的构造函数执行此操作不是最好的主意,但是我不解决该问题。 任何提示表示赞赏,谢谢
正是有一个模式,就是Factory
。
class Ngram { }
class Ugram extends Ngram { }
class Bigram extends Ngram { }
public class NgramFactory {
public static Ngram createNgram(int n) {
if (n ==1) {
return new Ugram();
} else {
return new Bigram();
}
}
}
用法: NgramFactory.createNgram(x)
public Ngram createNgram(int n){
switch(n){
case 1:
return new Unigram();
case 2:
...
}
}
使用Factory
模式可以根据您的参数创建新对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.