Переписать анонимный внутренний класс в замыкание (Java -> xtend)

Как я могу переписать свой тестовый метод в xtend? Я пробовал несколько вещей, но у меня ничего не получается.

Класс написан на xtend

import com.google.common.base.Function

class Generator {
@Property Function<Generator, CharSequence> generateSomething;

generateFoo() {
    if( null != generateSomething) {
        generateSomething.apply(this)
    }
}

TestClass, написанный на Java

@Test
public void testX() {

    Generator gen = createGenerator()

    Function<Generator, CharSequence> generateSomething= new Function<Generator, CharSequence>() {
        @Override
        public CharSequence apply( Generator input ) {
            StringConcatenation result = new StringConcatenation();
            result.append(".......");

            return result;
        }
    };

    gen.setGenerateSomething( generateSomething );

}

1 ответ

Хорошо, я решил это так:

import com.google.common.base.Function

class Generator {
@Property private (Generator) => CharSequence generateSomething;

generateFoo() {
    if( null != generateSomething) {
        generateSomething.apply(this)
    }
}

Переписать метод теста в xtend:

@Test
def void testX() {

    Generator gen = createGenerator()

    gen.setGenerateSomething['''......''']
}
Другие вопросы по тегам