Я использовал библиотеку под названием Mallet. Это, безусловно, самая сложная библиотека Java, которую я когда-либо использовал. Они предоставляют учебники и шаблон кода, и я пытался понять это. Однако я натолкнулся на эту строку кода:Java pass and construct class как аргумент функции
TransducerEvaluator evaluator = new MultiSegmentationEvaluator(
new InstanceList[]{trainingData, testingData},
new String[]{"train", "test"}, labels, labels) {
@Override
public boolean precondition(TransducerTrainer tt) {
// evaluate model every 5 training iterations
return tt.getIteration() % 5 == 0;
}
};
Пожалуйста, не обращайте слишком много внимания на термин «преобразователь». Что передается в эту функцию? Два класса? Что это такое new String[]{}
? Я просто очень смущен этим синтаксисом, которого я никогда раньше не видел.
Это код для этого метода:
public MultiSegmentationEvaluator (InstanceList[] instanceLists, String[] instanceListDescriptions,
Object[] segmentStartTags, Object[] segmentContinueTags)
Может кто-нибудь сказать мне, что это странно конструкт?
Что такое «новый»? Что такое 'String'? С чем связано '[]'? –
Сладкие, анонимные классы. ИМО их следует избегать, как чуму, хотя это достаточно просто, чтобы я мог видеть оправдание этого. – Jared