Tag: java 8

在jdk 8中定义接口上的静态(非inheritance)方法的正确语法是什么?

虚拟扩展方法/ aka默认的可覆盖方法的语法(在jdk 8中)有详细记录: public interface Foo { default void bar(String out) { System.out.println(out); }; } 但我找不到任何关于接口上静态非inheritance方法的正确语法的参考?

将unicode参数传递给Java命令行

使用JDK 1.8和OSX。 对于args ,其中一个是unicode(中文,日文等)字符。 想知道如何通过它们? 我在SO上搜索了一些解决方案,但没有工作。 我试过了, 执行java命令运行类文件时,添加-Dfile.encoding=UTF-8 ; 通过引用“和”引用来传递unicode参数。 在我的代码中,我尝试在args.length的开头打印args.length ,它始终打印为零。 问候,林

我可以使用较新的JDK编译带有ant的较旧Java版本的java,以便在编译使用较新API的代码时生成输出吗?

我想只在我的系统上安装JDK 8,并且让ant javac编译操作为java 6环境创建工作类文件。 如果我在语法上只使用符合java 6的代码,这种方式有效,但是我的代码可以访问java 8 API的方法/类,并且根据ant的编译操作仍然符合java 6。 这甚至是使用“javac”任务属性“source”和“target”设置为java 6的情况。我知道这会产生以下警告:[javac]警告:[options] bootstrap类路径未设置为同时与-source 1.6。 但这不是帮助我检测我的代码是否实际使用新引入的API元素的警告类型。 当编译的代码试图利用java 8 API引入的方法/类时,我需要编译动作以某种方式做某事。 例如:使用符合java 6的代码,如果使用JDK 8进行copmiled,我可以访问java.lang.reflect.Constructor.getParameters(),JDK 8是从Java 8引入的父类Executableinheritance的方法。 当代码在java 6 exeuction环境中运行时,执行该语句将导致抛出NoSuchMethodException,不可预测,因此也未处理。 我需要我的ant编译动作生成一些不同类型的输出(停止或警告或其他),以便我可以自动执行某些操作。 在这种情况下,我是否有与ant相关的解决方案?

将嵌套列表转换为嵌套Map

如何将List<Map>为Map<String,Map> ,同时保持外部地图的键类似于内部Map 。 例如: 记录 应转换为 . 是否有任何Java API可以很容易地执行此操作?

如何为Java 8分组函数形成的结果添加标签?

我目前有一节课, public class Person { private String country; private String age; private String name; } 以此Person类的列表作为参数, List 我设法使用Java 8 group by(集合)函数将它们分组到以下数据结构中: Map<String, Map<String, Set>> 例: USA={ 21= [ John, Peter. Andrew ], 22= [ Eric, Mark ] ] }, France = { etc…. 以下是我的function: public static Map<String, Map<String, Set>> getNestedMap(List persons) { return persons.stream().collect( groupingBy(Person::getCountry, […]

使用Stream API组织应用程序管道

据我所知,Stream API旨在应用于集合。 但是我非常喜欢他们的想法,所以当我可以和不应该的时候,我会尝试应用它们。 最初我的应用程序有两个线程通过BlockingQueue通信。 首先会填充新元素。 第二个对它们进行转换并保存在磁盘上。 对我而言,看起来像是一个完美的流机会。 我最终得到的代码是: Stream.generate().flatten().filter().forEach() 我想把几张map放在那里,但事实certificate我必须拖一个额外的字段直到forEach 。 因此,我要么必须创建具有两个字段和模糊名称的无意义的类,要么使用AbstractMap.SimpleEntry来传递两个字段,这对我来说并不是很重要。 无论如何,我改写了我的应用程序,它甚至似乎工作。 但是有一些警告。 因为我有无限的流’事物’无法阻止。 现在我在守护程序线程上启动它,但这不是一个解决方案。 业务逻辑(如连接丢失/发现,这可能不是BL)看起来疏远了。 也许我只需要代理。 另一方面,队列人口有自由懒惰。 一个线程而不是两个(不知道这有多好)。 希望熟悉其他开发人员的模式。 所以我的问题是使用Stream API进行应用程序流组织是否可行? 还有更多的不足之处吗? 如果没有推荐什么是替代品?

使用方法引用

我有一个名为saveButton的JButton并希望它在单击时调用save方法。 当然,我们可以使用旧方法来做到这一点: saveButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { save(); } }); 但今天我想使用新的Java 8function,如方法引用。 为什么 saveButton.addActionListener(this::save); 不行? 如何使用方法引用完成?

在Java 8中的有序列表上进行映射

在Java 8附带的流式库中,我们提供了forEachOrdered API,其文档在此处转载 void forEachOrdered(消费者行为) 对此流的每个元素执行操作。 这是终端操作。 此操作一次一个地处理元素, 如果存在则以遭遇顺序处理 。 在为后续元素执行操作之前,对一个元素执行操作 ,但对于任何给定元素,可以在库选择的任何线程中执行操作。 我们在地图API的订购方面有任何保证吗? 例如,我在代码中有以下内容 private final BazUtils bazUtils; public List getFoos(List bars) { AtomicInteger idx = new AtomicInteger(1); return bars.stream() .map(bar -> bazUtils.getFoo(bar, idx.getAndAdd(1))) .collect(Collectors.toList()); } 在处理过程中是否会遵守bars顺序?

如何使用具有Java 8function的Realm数据库

我不熟悉Android的Realm数据库。 我修改了我的gradle文件以包含Jack工具链,以便我可以使用Java 8语言function。 我还修改了gradle文件来安装Realm插件 。 当我同步项目gradle文件时,我收到以下错误: Error:Could not find property ‘options’ on task ‘:app:compileDebugJavaWithJack’ 。 这两个修改本身很好,但由于某种原因,我不能同时兼得。 我非常感谢这方面的帮助。

局部变量必须是最终的或有效的最终

我在Java 8中有一个异步操作,它返回一个onError回调或onSuccess回调。 如果操作成功与否,我需要返回我的方法。 所以我返回一个布尔值来说明这个信息。 我面临的问题是我得到以下编译错误: 错误:从内部类引用的局部变量必须是最终的或有效的最终 谷歌搜索错误我可以看到你不允许这种类型的操作,但如果操作成功与否,我怎么能返回? public Boolean addUser(String email, String password) { Boolean isSuccess = false; Map item = new HashMap(); item.put(“email”, new AttributeValue(email)); //email item.put(“password”, new AttributeValue(password)); //password dynamoDB.putItemAsync(new PutItemRequest().withTableName(“Users”).withItem(item), new AsyncHandler() { @Override public void onError(Exception excptn) { } @Override public void onSuccess(AmazonWebServiceRequest rqst, Object result) { isSuccess = true; } […]