使用Stream.of创建通用流非常方便,但是如果我想创建一个Stream<String[]>只有一个元素呢?
比方说我有:
String[] tropicalFruits = new String[] {"pineapple", "banana", "mango"};
String[] fruits = new String[] {"melon", "peach", "apple"};
Run Code Online (Sandbox Code Playgroud)
然后Stream.of(tropicalFruits, fruits)产生Stream<String[]>两个元素.如何为单个元素的流实现相同的功能?如果我尝试:
Stream<String[]> fruityStream = Stream.of(tropicalFruits);
Run Code Online (Sandbox Code Playgroud)
我明白了:
错误:不兼容的类型:推理变量
T具有不兼容的边界
相等约束:java.lang.String[]
下限:java.lang.StringRun Code Online (Sandbox Code Playgroud)Stream<String[]> fruityStream = Stream.of(fruits); ^---------------^
我用Google搜索并搜索了但是我什么也没得到.在我看来,这不是一个非常不寻常的或esoeteric问题,所以有点令人惊讶我没有得到任何答案(或者我没有用正确的关键词搜索).
我为SWT应用程序设置了一个Maven项目.此应用程序在多个平台(OS X,Windows 64位,Windows 32位,Linux 64位和Linux 32位)上运行,我已对其进行设置,以便在运行Maven并打包时检测到该平台应用程序转到不同的目标目录.以下是来自pom.xml的相关部分,以实现此目的:
<profiles>
<profile>
<id>linux_x86_64</id>
<activation>
<os>
<name>linux</name>
<arch>amd64</arch>
</os>
</activation>
<build>
<directory>${project.basedir}/target/${project.version}/linux_x86_64</directory>
</build>
</profile>
<profile>
<id>win32_x86_64</id>
<activation>
<os>
<name>linux</name>
<arch>i386</arch>
</os>
</activation>
<build>
<directory>${project.basedir}/target/${project.version}/win32_x86_64</directory>
</build>
</profile>
...
</profiles>
Run Code Online (Sandbox Code Playgroud)
用于SWT的依赖是这样的:
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>swt</artifactId>
<version>3.7.2.v3740</version>
</dependency>
...
</dependencies>
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我已在我的本地存储库中安装了SWT虚拟包(org.eclipse.swt_3.7.2.v3740f.jar)和所有特定于平台的虚拟包(org.eclipse.swt.gtk.linux.x86_64_3.7.2).v3740f,org.eclipse.swt.win32.x86_64_3.7.2.v3740f等).
我打包依赖关系的方式是使用maven-dependency-plugin的"lib"文件夹,Maven足够聪明,可以复制SWT虚拟包和我正在打包应用程序的平台特定的一个.到现在为止还挺好...
问题是我想从一台机器编译不同平台的应用程序.我怎么做到这一点?
我尝试在每个配置文件中使用每个平台所需的SWT jar设置属性,如下所示(Windows 64位示例):
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
Run Code Online (Sandbox Code Playgroud)
但是采用这种方法,特定于配置文件的SWT jar 和我正在运行Maven的特定于平台的jar 被复制到"lib"目录中,最后得到三个jar:
有没有一种方法可以指定一个配置文件忽略我运行它的机器,这样我就不需要手动删除它的SWT jar了?
提前致谢.
babel-preset-env提供useBuiltIns将其应用于babel-polyfill并转换import 'babel-polyfill'为特定的,基于环境的选项import 'core-js/whatever.
如果我添加babel-polyfill了我的Webpack条目部分(参见下面的示例),或者在这种情况下useBuiltIns被忽略并被所有可能的导入替换,是否应用了此转换?
entry: {
app: ['babel-polyfill', './src/app.js']
}
Run Code Online (Sandbox Code Playgroud) 本周我开始使用Maven进行一些我正在研究的项目,并将Eclipse与m2e插件一起使用.我一直在看它,但我找不到编译和打包的方法(据我所知,我可以做清理,生成源,测试和安装).如何用m2e实现这一目标?
我想知道request_method在Rails 4应用程序的每个cookie中找到的值的目的是什么.
$ curl -i localhost:3000
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Ua-Compatible: chrome=1
Content-Type: text/html; charset=utf-8
Etag: "396b1283ee1adc85adf3c604a553ad74"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: d8577072-a823-418c-b521-6c34dbe71645
X-Runtime: 0.068436
Server: WEBrick/1.3.1 (Ruby/2.0.0/2013-06-27)
Date: Wed, 04 Dec 2013 21:16:38 GMT
Content-Length: 4375
Connection: Keep-Alive
Set-Cookie: request_method=GET; path=/
...
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了它,在任何地方都找不到答案.为什么不直接使用会话值?
我\xe2\x80\x99m 在一个Java 项目中工作,并且我\xe2\x80\x99 最近开始向方法参数和返回值添加可为空的注释。我想知道是否可以将任何注释添加到参数中,以便它也涵盖泛型类型。目前我身边也有类似的案例:
\n\nMap<String, String> someMethod(Map<String, Map<String, String>> arg) {\n...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n那就变成:
\n\n@NotNull\nMap<@NotNull String, @NotNull String> someMethod(@NotNull Map<@NotNull String, @NotNull Map<@NotNull String, @NotNullString>> arg) {\n...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n显然,这变得难以阅读。我\xe2\x80\x99m对Java注释的内部不是很熟悉,所以也许这是\xe2\x80\x99不可能的?
\n我有一个带有以下签名的方法:
public <T> int numberOfValues(Map<T, Set<?>> map)
Run Code Online (Sandbox Code Playgroud)
但是我不能称之为传递Map<String, Set<String>>.例如,以下内容无法编译:
Map<String, Set<String>> map = new HashMap<>();
numberOfValues(map);
Run Code Online (Sandbox Code Playgroud)
错误消息是:
numberOfValues (java.util.Map<java.lang.String,java.util.Set<?>>) in class cannot be applied to (java.util.Map<java.lang.String,java.util.Set<java.lang.String>>)
Run Code Online (Sandbox Code Playgroud)
但是,如果我改为以下一切都很好:
public <T, V> int numberOfValues(Map<T, Set<V>> map)
Run Code Online (Sandbox Code Playgroud)
但是我对此并不感兴趣V,因为我只想知道每组的大小.
为了完整起见,这是整个方法:
public <T, V> int numberOfValues(Map<T, Set<V>> map) {
int n = 0;
for (T key : map.keySet()) {
n += map.get(key).size();
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
我知道它也可以像这样完成,但不是问题的重点:)
public <T> int numberOfValues(Map<?, Set<T>> map) {
int n = 0;
for (Set<T> value …Run Code Online (Sandbox Code Playgroud)