相关疑难解决方法(0)

在Java中调用静态方法中的非静态方法

当我尝试在静态类中调用非静态方法时,我收到错误.

无法从类型回放中对非静态方法methodName()进行静态引用

我不能使方法静态,因为这也给我一个错误.

此静态方法无法从xInterface隐藏实例方法

有没有办法在另一个静态方法中调用非静态方法?(这两种方法分别是单独的包和单独的类).

java static non-static

118
推荐指数
6
解决办法
35万
查看次数

静态上下文无法访问收集器中的非静态

我有一群学生.首先,我想用标记对它们进行分组.然后我想进一步将这些集合分组到同名学生中.

   Map<Integer,Map<String,List<String>>> groupping = students.stream()
                                                        .collect(Collectors.groupingBy(Student::getMarks, 
                                                                Collectors.mapping(Student::getName,Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说,

非静态方法不能从静态上下文中引用.

是.我非常清楚,如果没有实例,我就无法引用非静态方法.但是对于所有这些流操作,我真的很困惑.

而不是如何解决这个问题; 我真的想知道这里发生了什么.您的任何投入都表示赞赏!

因为如果我写下面的分组是完全有效的;

    Map<Integer,List<Student>> m = students.stream().
            collect(Collectors.groupingBy(Student::getMarks));
Run Code Online (Sandbox Code Playgroud)

这是我的Student.java类(如果你需要的话)

public class Student {

    private String name;
    private int marks;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMarks() {
        return marks;
    }

    public void setMarks(int marks) {
        this.marks = marks;
    }

    public Student(String name, int marks) {

        this.name = name;
        this.marks = marks;
    }

    @Override
    public String toString() { …
Run Code Online (Sandbox Code Playgroud)

collect java-8 java-stream method-reference

26
推荐指数
1
解决办法
2万
查看次数