2014-02-03 3 views
1
public class ActivityInventoryMem<Activity> extends TreeSet<Activity> implements ActivityInventory<Activity> { 

    @Override 
    public ToDo toDo(LocalDate date) { 
    Stream<Activity> s = this.parallelStream(); 

    s.filter(a -> a.completed()); 
    return new ToDo(); 
    } 
} 

Вот исключениеПочему поток не распознает мой тип?

java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.util.stream.Stream.filter 
at com.lm.infrastructure.memory.ActivityInventoryMem.toDo(ActivityInventoryMem.java:16) 
at com.lm.infrastructure.memory.ActivityInventoryMemNGTest.testToDo(ActivityInventoryMemNGTest.java:46) 

Я бегу его в JDK 8, и я поставил следующие в моей pom.xml, что теперь он, кажется, признает

<!-- maven-compiler-plugin --> 
    <maven.compiler.target>1.8</maven.compiler.target> 
    <maven.compiler.source>1.8</maven.compiler.source> 

Проблема лямбда в (из того, что я собрал из netbeans) заключается в том, что он обрабатывает a как просто Object, а не Activity, и поэтому он не может видеть .completed(), как я могу это исправить?

+1

Я не знаю, если это ваш полный код, но если она есть, 's.filter()' вызов эффективно ничего не делает. Это ленивая промежуточная операция. Поток фактически ничего не сделает, пока вы не добавите операцию терминала. См. Документацию класса 'java.util.stream'. –

ответ

7

В вашем объявлении:

public class ActivityInventoryMem<Activity> extends TreeSet<Activity> implements ActivityInventory<Activity> 
//        ^(1)     ^(2)        ^(3) 

использования Activity в (2) и (3) являются аргументами типа в TreeSet и ActivityInventory, в то время как использование в (1) объявить новый параметр типа для вашего класса ActivityInventoryMem. Таким образом, использование символа Activity в этом классе не относится к вашему фактическому классу Activity, они относятся к некоторому параметру типа, фактический тип которого неизвестен.

Вы, вероятно, просто хочу уйти от (1) из объявления класса:

public class ActivityInventoryMem extends TreeSet<Activity> implements ActivityInventory<Activity> 
Смежные вопросы