【发布时间】:2016-10-24 18:05:13
【问题描述】:
我有这种情况,我不确定为什么会发生这种情况,也许你可以帮助我解决这个问题。
我有一个具有这种结构的类 MyClass。 (带有 getter 和 setter)
public class MyClass {
private String id;
private String title;
private boolean anyBoolean;
我添加了一些静态属性,比如我们
public class MyClass {
public static final Group CONS_1 = new Group("cons_1","Cons 1", false);
public static final Group CONS_2 = new Group("cons_2","Cons 2", true);
private String id;
private String title;
private boolean anyBoolean;
public MyClass(String id, String title, boolean anyBoolean) {
this.id = id;
this.title = title;
this.anyBoolean = anyBoolean;
}
仅供参考,我没有使用枚举,因为我必须序列化所有属性,而使用枚举它只序列化名称。 后来我意识到最好有办法通过 ID 公开这些常量,例如
public static Map<String, MyClass> myMap;
我尝试了一种基本的方法,例如
static {
myMap = new HashMap<>();
myMap.put(CONS_1.getId(), CONS_1);
}
显然,它奏效了。 但我想知道我是否可以使用 Stream 来做到这一点,比如
myMap = Stream.of(CONS_1, CONS_2).collect(Collectors.groupingBy(MyClass::getId));
但不起作用,因为 getId() 是非静态的。
所以我的问题是为什么第二种方法不起作用,因为两种方法看起来都一样?
谢谢!
【问题讨论】:
标签: java java-8 java-stream