JAVA - 根据参数从抽象类创建对象

时间:2015-02-05 14:48:51

标签: java class constructor abstract

我100%肯定以前曾经问过,但我不知道该怎么去谷歌:

假设我有一个抽象类Ngram,它基本上只是一个List:

abstract class Ngram {
private List<Word> words = new ArrayList<Word>();
... }

现在可以创建一个子类Unigram,Bigram的对象......取决于参数n?像这样:

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,但这不起作用。我想让抽象超类的构造函数做到这一点并不是最好的想法,但我不知道如何解决这个问题。感谢任何提示,谢谢

3 个答案:

答案 0 :(得分:3)

确切地说有一种模式,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)

答案 1 :(得分:1)

public Ngram createNgram(int n){
    switch(n){
    case 1:
        return new Unigram();
    case 2:
        ...
    }
}

答案 2 :(得分:0)

使用Factory - 模式可让您根据参数

创建新对象
相关问题