Я на 100% уверен, что это было предложено раньше, но я не знаю, что Google:JAVA - создавать объекты абстрактного класса в зависимости от аргументов
Предположим, у меня есть абстрактный класс Ngram, что в основном только список:
abstract class Ngram {
private List<Word> words = new ArrayList<Word>();
... }
ли теперь можно создать объект подкласса Юниграмма, Биграммные ... в зависимости от параметра п? Что-то вроде этого:
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
}
Я попытался вернуть новую Юниграмму, но это не работает. Я думаю, это не самая лучшая идея, чтобы позволить конструктору абстрактного суперкласса сделать это, но я не понимаю, как решить эту проблему. Любые советы оценили, спасибо
Спасибо, что на самом деле делает много смысла. –