草庐IT

guava-jdk

全部标签

java - 可选与 Guava 可选

很长一段时间以来,我一直在我的项目中使用Guava提供的Optional。现在我决定从Java7迁移到Java8,但由于在我的整个项目中我使用了guava的Optional到目前为止,我必须运行代码并做出重大改变。虽然我还不确定是否值得改变,或者最好保持原样,从现在开始使用Java的Optional。Java的Optional有什么好处或漏洞吗,它比我们在guava中的更好吗? 最佳答案 两个类的API不一样。我不会用正则表达式改变这个。我认为重要的三个区别:可选在Guava中是抽象的,这意味着对象是子类。在Java中,Option

java - JDK 9 是否应该不允许在覆盖方法中引用最终字段的 Lambda 表达式实例化?

我一直在使用新的EclipseNeon,我的一些代码立即开始出错。起初这对我来说很奇怪,但后来我发现了hereNeonECJ(EclipseJavaCompiler)采用了JDK9早期版本编译器的态度。我没有遇到该链接中的相同问题,而是我将在此处解释的另一个问题。Lambda表达式声明作为字段的问题这是一个测试类,在EclipseNeon、JDK9编译器和JDK8编译器(虽然不是以前版本的Eclipse)中给我一个编译错误.publicclassWeird{privatefinalFunctionaddSuffix=text->String.format("%s.%s",text,th

Java:从 jdk.* 导入是否安全?

用这样的导入编写Java程序对我来说安全吗:importjdk.nashorn.api.scripting.NashornScriptEngineFactory;importjdk.nashorn.api.scripting.ClassFilter;注意:在我的示例中,我导入了Nashorn,但它可以是任何其他jdk包。注意:我知道从java.*、javax.*导入是安全/正确的,从sun.*导入是不安全/不支持的。我在这里看到一篇好文章:http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html我在Java官

来自 JDK 1.6 的 JavaCompiler : how to write class bytes directly to byte[] array?

所以我最近了解到新的JavaCompilerAPI在JDK1.6中可用。这使得直接从运行代码将String编译为.class文件变得非常简单:StringclassName="Foo";StringsourceCode="...";JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();ListunitsToCompile=newArrayList(){{add(newJavaSourceFromString(className,sourceCode));}};StandardJavaFileManagerfileManage

java - Guava/Google Collections 的向后兼容性如何?

我正在开发包含多个项目的大型应用程序,所有项目仍然使用GoogleCollections1.0。我想升级到Guava12。项目的测试覆盖率不是很好。有没有人有过类似的升级经验,有没有不兼容的地方?主要问题是什么? 最佳答案 这里是Guava贡献者。Guava12几乎完全向后兼容GoogleCollections,但极少数方法已经过了18个月的弃用期并被删除;见https://code.google.com/p/guava-libraries/issues/detail?id=836.也就是说,没有人应该仍然在使用GoogleColl

java - 在 Guava 中,为什么在可能使用 "T"的地方只使用 "? super T"?

为什么实用程序工厂方法经常使用特定的通用参数(如T)而不是有界通配符参数(如?superT)?例如Functions#forPredicate的签名是:publicstaticFunctionforPredicate(Predicatepredicate)为什么不使用:publicstaticFunctionforPredicate(Predicatepredicate)哪个可以使类似下面的事情成为可能?PredicateisPositivePredicate=...FunctionisPositiveInteger=Functions.forPredicate(isPositiveP

java - IntelliJ IDEA 16 无法解析JDK1.8

我有IntelliJIDEACE。我做了一些编码练习(在maven中有一些项目),我正在使用IDEA15CE开发它。然后更新来了,由于错误,我无法再次构建项目:JComboBox用法在JDK1.6API之后生成,这会导致JDK5.0的编译问题。(在maven中是目标JDK1.8,在IDEA首选项中是JDK1.8,在项目首选项中是JDK1.8。我尝试从IDEA15(它仍然可以正常工作)导入设置没有区别,我也尝试全新安装IDEA...没有结果。有什么帮助吗? 最佳答案 终于知道了文件->项目结构->模块...对于每个模块,我都必须设置版

java - 如何防止使用 google guava 库中的 beta 类?

几个月来,我们一直在生产中使用Google集合。我们想开始使用Guava来获得额外的功能。但是,我担心将Guava带入我们的产品堆栈b/c一些开发人员可能会开始使用“测试版”类。我们的代码中有各种单元测试,但在这一点上,我不希望包含“测试版”类b/c,它在未来可能会发生变化。是否有任何简单的方法来检测项目是否包含任何“测试版”Guava类? 最佳答案 Overstock.com最近released标记@Beta类、方法或字段的使用的Findbugs插件。 关于java-如何防止使用goo

java - JDK7工具强制使用英文

我刚刚在德国Windows机器上安装了JDK7,我注意到的第一件事是,与JDK6不同,它在操作系统和一些消息(例如,来自工具的帮助消息,而不是来自编译器的错误消息)之后采用德语.我怎样才能强制它到处使用英语?据我所知,安装程序不是特定语言的,安装过程中的所有消息都是英文的。 最佳答案 您可以使用环境变量JAVA_TOOL_OPTIONS设置默认的java选项。因此,要更改语言,请将其设置为-Duser.language=enSource 关于java-JDK7工具强制使用英文,我们在St

java - java messagedigest 会在不同的 jdk 版本上生成不同的 MD5 哈希值吗?

我正在使用java消息摘要创建MD5哈希,用于身份验证。MD5哈希作为varchar2存储在数据库中。我做了一个测试,在我本地笔记本电脑上的tomcat服务器上创建一个用户。我在linuxredhat上部署war到测试tomcat服务器时,由于hash不匹配导致认证失败。我检查了用户名和密码:都是正确的。两个Web服务器都指向同一个数据库。我怀疑在我的本地笔记本电脑上生成的哈希值与测试服务器生成的哈希值不同。我对吗?下面是我用来生成散列的代码。publicstaticStringgetMD5Hash(Stringstr)throwsException{MessageDigestmd=M