繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM