@SuppressWarnings("hiding")
public interface Predicate <Student> {
boolean accept(Student stud);
}
import java.util.function.Predicate;
public class StudRok implements Predicate <Student> {
public boolean accept(Student stud) {
return stud.getRok() == 2;
}
@Override
public boolean test(Student t) {
return false;
}
}
W mainie:
@SuppressWarnings("rawtypes")
Iterator <Student> iterRok = new FilteredIterator(Studenci.iterator(), new StudRok());
wyswietl(iterRok);
A tu jest błąd:
import java.util.Iterator;
import java.util.function.Predicate;
@SuppressWarnings("hiding")
public final class FilteredIterator<Student> implements Iterator<Student>{
private Iterator<Student> iterator;
private Predicate<Student> predicate;
private Student stud=null;
private boolean bHasNext=true;
public FilteredIterator(Iterator<Student> iterator, Predicate<Student> predicate) {
super();
this.iterator = iterator;
this.predicate = predicate;
findNextValid();
}
@SuppressWarnings("unchecked")
private void findNextValid() {
while (iterator.hasNext()) {
stud = iterator.next();
if ((predicate).accept(stud)) {
return;
}
}
bHasNext=false;
stud=null;
}
@Override
public boolean hasNext() {
return bHasNext;
}
@Override
public Student next() {
Student nextValue = stud;
findNextValid();
return nextValue;
}
}
Błąd jest tutaj: if ((predicate).accept(stud)) {
Błąd: The method accept(Student) is undefined for the type Predicate<Student>
Co robię źle?