小编Kar*_*n L的帖子

为什么使用带有泛型的Collections.emptySet()可以在赋值中工作但不能用作方法参数?

所以,我有一个像这样的构造函数的类:

public FilterList(Set<Integer> labels) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想FilterList用空集构造一个新对象.按照Joshua Bloch在他的"Effective Java"一书中的建议,我不想为空集创建一个新对象; 我会Collections.emptySet()改用:

FilterList emptyList = new FilterList(Collections.emptySet());
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误,抱怨java.util.Set<java.lang.Object>不是java.util.Set<java.lang.Integer>.好的,这个怎么样:

FilterList emptyList = new FilterList((Set<Integer>)Collections.emptySet());
Run Code Online (Sandbox Code Playgroud)

这也给了我一个错误!好的,这个怎么样:

Set<Integer> empty = Collections.emptySet();
FilterList emptyList = new FilterList(empty);
Run Code Online (Sandbox Code Playgroud)

嘿,它有效!但为什么?毕竟,Java没有类型推断,这就是为什么你,如果你得到一个unchecked转换警告Set<Integer> foo = new TreeSet()代替Set<Integer> foo = new TreeSet<Integer>().但Set<Integer> empty = Collections.emptySet();工作甚至没有警告.这是为什么?

java generics collections type-inference

54
推荐指数
4
解决办法
5万
查看次数

如何在Java中实例化一组地图?

我可以使用泛型声明一个地图数组来指定地图类型:

private Map<String, Integer>[] myMaps;
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何正确实例化它:

myMaps = new HashMap<String, Integer>[count]; // gives "generic array creation" error
myMaps = new HashMap[count]; // gives an "unchecked or unsafe operation" warning
myMaps = (Map<String, Integer>[])new HashMap[count]; // also gives warning
Run Code Online (Sandbox Code Playgroud)

如何在不收到编译器错误或警告的情况下实例化此数组映射?

更新:

谢谢大家的回复.我最终得到了List建议.

java arrays generics instantiation map

36
推荐指数
3
解决办法
6万
查看次数

如何在JavaFX中创建调整大小的间隔符?

首先,我是Java/Swing的长期开发人员.我最近安装了JavaFX 2.2来玩.

我正在创建一个相当简单的应用程序,其主窗口顶部有一个工具栏,窗口的其余部分有内容.实现这一目标的显而易见的方法是使用a BorderPane,并将其粘贴ToolBar到顶部.到现在为止还挺好.但是,我希望工具栏中的某些控件位于窗口的左边缘,而某些控件位于右边缘.我找不到办法做到这一点.我可以将一个不可见的spacer对象放入工具栏中,但我只知道如何给它一个固定的宽度; 调整窗口大小时不会调整大小.

所以我认为不是使用ToolBar对象,而是使用HBox; 它应该等同于水平方向的Swing Box对象,对吗?Swing Box类有一个createHorizontalGlue()插入自动调整间隔的方法.好吧,我找不到JavaFX HBox类中的等价物.有没有简单的方法来做到这一点?

layout javafx

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