我有一群学生。首先,我想按标记对它们进行分组。然后,我想进一步将这些集合归为同名学生。
Map<Integer,Map<String,List<String>>> groupping = students.stream()
.collect(Collectors.groupingBy(Student::getMarks,
Collectors.mapping(Student::getName,Collectors.toList())));
我收到一个错误消息,
非静态方法不能从静态上下文中引用。
是。我非常清楚,没有实例就无法引用非静态方法。但是,对于所有这些流操作,我对真正出了什么问题感到有些困惑。
而不是如何解决这个问题;我真的很想知道这是怎么回事。您的任何意见表示赞赏!
因为如果我写下面的分组是完全有效的;
Map<Integer,List<Student>> m = students.stream().
collect(Collectors.groupingBy(Student::getMarks));
这是我的Student.java类 (如果需要的话)
public class Student {
private String name;
private int marks;
// getters, setters, constructor and toString
}
不幸的是,错误消息“ 不能从静态上下文中引用非静态方法 。” 当涉及方法引用时,它只是任何类型不匹配问题的占位符。编译器只是无法确定实际问题。
在您的代码中,目标类型Map<Integer, Map<String, List<String>>>
与组合收集器的结果类型()不匹配Map<Integer, List<String>>
,但是编译器没有尝试确定此(独立)结果类型,因为(嵌套)通用方法调用中合并了方法引用需要用于解析方法引用的目标类型。因此,它不会报告分配的类型不匹配,而是解决方法引用的问题。
正确的代码就是
Map<Integer, List<String>> groupping = students.stream()
.collect(Collectors.groupingBy(Student::getMarks,
Collectors.mapping(Student::getName, Collectors.toList())));
我正在尝试编写一段代码,当我选中两个复选框中的一个复选框时,它将更改我选择按钮时显示的消息。 我收到的错误消息是: "FirstWindow.java:12:错误:不能从静态上下文消息中引用非静态变量消息="good job\n";" 对于第12、37、53、57行。我已尝试在main中声明字符串变量,但我只会收到错误: “FirstWindow。java:38:错误:从内部类引用的局部变量必须是
我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:
我正在编写此代码,它显示了错误非静态方法googleapiability . isgoogleplayservicesavailable(上下文上下文)和googleapiability . get error dialog(Activity Activity,int errorCode,int requestCode)不能从静态上下文中引用。
可能重复: 为什么我得到“非静态变量不能从静态上下文引用”? 这是代码 错误说: 不能从静态上下文引用非静态类节点 为什么我不应该在main()方法中引用Node类?
问题内容: 我正在玩http://www.concretepage.com/java/jdk-8/java-8-unaryoperator- binaryoperator- example中的 示例。 我真正感到困惑的是,当我在形成收集器时错误地将错误的类型放到一个泛型中时,java编译器给了我一个非常令人误解的信息: 无法从静态上下文引用非静态方法 我的错误与现实中的静态vs实例上下文无关: 我
问题内容: 我对Java和一般编程非常陌生。我为一个基本程序编写了此代码,以将用户输入的2个数字相加,并将它们加起来并显示在输出框中,但是我得到了,但是我不知道什么是静态的 给出错误的行: 抱歉,如果我非常不称职,但我搜索了一下,但我真不明白该如何解决。谢谢。 问题答案: 在静态上下文中,您没有对象(类的实例),但是实例变量和方法取决于它们。 您有一个名为output1的实例,但是您尝试通过类的名