Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于Main类型,collectFrom(List<;Integer>;)方法未定义_Java_List_Generics_Interface_Compiler Errors - Fatal编程技术网

Java 对于Main类型,collectFrom(List<;Integer>;)方法未定义

Java 对于Main类型,collectFrom(List<;Integer>;)方法未定义,java,list,generics,interface,compiler-errors,Java,List,Generics,Interface,Compiler Errors,我对这个代码有问题。它抛出了一个“类型Main的方法collectFrom(List)未定义”错误,我真的不知道问题出在哪里 “test1”方法的选择器应该从小于10的列表数字中进行选择,映射器应该将这些选择的数字增加10 import java.util.*; public class Main { public Main() { List<Integer> src1 = Arrays.asList(1, 7, 9, 11, 12); System.out.p

我对这个代码有问题。它抛出了一个“类型Main的方法collectFrom(List)未定义”错误,我真的不知道问题出在哪里

“test1”方法的选择器应该从小于10的列表数字中进行选择,映射器应该将这些选择的数字增加10

import java.util.*;

public class Main {
  public Main() {
    List<Integer> src1 = Arrays.asList(1, 7, 9, 11, 12);
    System.out.println(test1(src1));
  }

  public List<Integer> test1(List<Integer> src) {
    Selector<Integer> sel = new Selector<Integer>() {
        @Override
        public boolean select(Integer a) {
            if(a < 10) {
                return true;
            } else {
                return false;
            }
        }
    };
    Mapper<Integer> map = new Mapper<Integer>() {
        @Override
        public Integer map(Integer a) {
            return a+=10;
        }
    };
    return collectFrom(src).when(sel).mapEvery(map);
  }


  public static void main(String[] args) {
    new Main();
  }
}
import java.util.*;
公共班机{
公用干管(){
List src1=Arrays.asList(1,7,9,11,12);
System.out.println(test1(src1));
}
公共列表test1(列表src){
选择器sel=新选择器(){
@凌驾
公共布尔选择(整数a){
如果(a<10){
返回true;
}否则{
返回false;
}
}
};
映射器映射=新映射器(){
@凌驾
公共整数映射(整数a){
返回a+=10;
}
};
返回collectFrom(src).when(sel).mapever(map);
}
公共静态void main(字符串[]args){
新的Main();
}
}
这是我的类列表创建者:

import java.util.ArrayList;
import java.util.List;

public class ListCreator <T>{

    List<T> lista;

    private ListCreator(List<T> src) {
        this.lista = src;
    }

    public static <T> ListCreator<T> collectFrom(List<T> src) {
        ListCreator<T> ls = new ListCreator<T>(src);
        return ls;
    };

    public ListCreator<T> when(Selector s) {
        List<T> whenLista = new ArrayList<T>();
        for(int i = 0; i < lista.size(); ++i) {
                if(s.select(lista.get(i))) {
                    whenLista.add(lista.get(i));
                }
            }
        this.lista = whenLista;
        return this;
    };

    public List<Integer> mapEvery (Mapper m) {
        List<Integer> mapLista = new ArrayList<Integer>();
        for(int i = 0; i < lista.size(); ++i) {
            mapLista.add((Integer)m.map(lista.get(i)));
        }
        return mapLista;
    }


}  
import java.util.ArrayList;
导入java.util.List;
公共类ListCreator{
清单a;
私有ListCreator(列表src){
this.lista=src;
}
公共静态ListCreator collectFrom(列表src){
ListCreator ls=新ListCreator(src);
返回ls;
};
公共ListCreator的时间(选择器s){
List whenLista=new ArrayList();
对于(int i=0;i

选择器和映射器只是简单的参数化接口。

collectFrom是在
ListCreator
类中定义的静态方法,而不是在
Main`。您可以通过以下方式确认呼叫:

return ListCreator.collectFrom(src).when(sel).mapEvery(map);
或者只是静态导入它:

import static mypackage.ListCreator.collectFrom;

collectFrom
ListCreator
的一种方法,而不是
Main