标签: java-8

注册表项错误:Java版本的值为"1.8",但需要"1.7"

在跑步的时候

sencha app build production
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:注册表项'Software\JavaSoft\Java Runtime Environment'\ CurrentVersion'

值为'1.8',但需要'1.7'.错误:找不到java.dll错误:找不到Java SE Runtime Environment.

java -version ,命令显示如下:

java版"1.8.0_40"Java(TM)SE运行时环境(版本1.8.0_40-b26)Java HotSpot(TM)64位服务器VM(版本25.40-b25,混合模式)

无法找到路径出错的地方.任何的想法?

-----------------------编辑-------------------------- ----------------------

注意:我使用的是Windows 7(64位).

我已经尝试卸载sencha touch cmd并重新安装.但仍然是同样的错误.

我已经卸载了所有的java版本实例并重新安装了最新的版本,问题仍然存在.

java sencha-touch java-8 sencha-touch-2 sencha-cmd

82
推荐指数
7
解决办法
17万
查看次数

JDK 8中的默认值是Java中的多重继承形式吗?

JDK 8中的新功能允许您在保留二进制兼容性的同时添加到现有接口.

语法就像

public interface SomeInterface() {
  void existingInterface();
  void newInterface() default SomeClass.defaultImplementation;
}
Run Code Online (Sandbox Code Playgroud)

这种方式对于所有现有的实现,SomeInterface当它们升级到这个新版本时,它们并不会突然编译错误newInterface().

虽然这很简洁,但当你实现两个接口时会发生什么呢?两个接口都添加了一个你没有实现的新默认方法?让我举个例子来解释一下.

public interface Attendance {
   boolean present() default DefaultAttendance.present;
}

public interface Timeline {
   boolean present() default DefaultTimeline.present;
}

public class TimeTravelingStudent implements Attendance, Timeline {

}

// which code gets called?
new TimeTravelingStudent().present();
Run Code Online (Sandbox Code Playgroud)

这被定义为JDK 8的一部分了吗?

我发现Java神在这里谈论类似的东西http://cs.oswego.edu/pipermail/lambda-lib/2011-February/000068.html,但它是私人邮件列表的一部分,我不能直接问他们.

有关如何在JDK 8中使用默认值以及扩展Collection接口以支持lambdas的更多详细信息,请参阅此处:https: //oracleus.wingateweb.com/published/oracleus2011/sessions/25066/25066_Cho223662.pdf

java closures interface multiple-inheritance java-8

80
推荐指数
5
解决办法
2万
查看次数

带有批处理的Java 8 Stream

我有一个包含项目列表的大文件.

我想创建一批项目,使用此批处理发出HTTP请求(所有项目都需要作为HTTP请求中的参数).我可以通过for循环很容易地完成它,但作为Java 8的爱好者,我想尝试用Java 8的Stream框架编写它(并获得延迟处理的好处).

例:

List<String> batch = new ArrayList<>(BATCH_SIZE);
for (int i = 0; i < data.size(); i++) {
  batch.add(data.get(i));
  if (batch.size() == BATCH_SIZE) process(batch);
}

if (batch.size() > 0) process(batch);
Run Code Online (Sandbox Code Playgroud)

我想做一些很长的路要走 lazyFileStream.group(500).map(processBatch).collect(toList())

最好的方法是什么?

java batch-processing java-8 java-stream

80
推荐指数
8
解决办法
4万
查看次数

Java中default关键字的用途是什么?

Java中的接口类似于类,但接口的主体只能包含抽象方法final字段(常量).

最近,我看到了一个问题,看起来像这样

interface AnInterface {
    public default void myMethod() {
        System.out.println("D");
    }
}
Run Code Online (Sandbox Code Playgroud)

根据接口定义,允许抽象方法.为什么它允许我编译上面的代码?什么是default关键字?

另一方面,当我试图写下面的代码时,它说 modifier default not allowed here

default class MyClass{

}
Run Code Online (Sandbox Code Playgroud)

代替

class MyClass {

}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我default关键字的目的?是否只允许在界面内?它与default(无访问修饰符)有何不同?

java default interface java-8

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

是否可以在Android API <24上使用Java 8 Stream API?

我在这里看过这篇文章.但我仍然无法在minSdkVersion <24上运行包含Java 8 Stream API功能的代码,如下所示.

List<Car> newCars = cars.stream()
                        .filter(s -> s.getColor().equals("red"))
                        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

由于错误消息,这不会运行

调用需要API级别24(当前最小值为15):java.util.Collection #stream

那么有人知道解决方案吗?

java android java-8 java-stream

80
推荐指数
4
解决办法
3万
查看次数

Java 8 Lambda表达式 - 嵌套类中的多个方法怎么样

我正在阅读以下新功能:http://www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html

我看到了下面的例子:

使用匿名类:

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
        System.out.println("Action Detected");
    }
});
Run Code Online (Sandbox Code Playgroud)

使用Lambda:

button.addActionListener(e -> {
    System.out.println("Action Detected");
});
Run Code Online (Sandbox Code Playgroud)

MouseListener如果他们想在匿名类中实现多个方法,有人会做什么,例如:

public void mousePressed(MouseEvent e) {
    saySomething("Mouse pressed; # of clicks: "
               + e.getClickCount(), e);
}

public void mouseReleased(MouseEvent e) {
    saySomething("Mouse released; # of clicks: "
               + e.getClickCount(), e);
}
Run Code Online (Sandbox Code Playgroud)

... 等等?

java lambda anonymous-class java-8

79
推荐指数
3
解决办法
5万
查看次数

将Java Future转换为CompletableFuture

Java 8引入CompletableFuture了一个可组合的Future的新实现(包括一堆thenXxx方法).我想独占使用它,但我想使用的许多库只返回不可组合的Future实例.

有没有办法将返回的Future实例包装在一个内部,CompleteableFuture以便我可以编写它?

java future java-8

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

我们应该如何为空值管理jdk8流

你好Java开发人员,

我知道主题可能有点 in advance因为JDK8尚未发布(现在还不是.)但我正在阅读一些关于Lambda表达式的文章,特别是与新集合API相关的部分,称为Stream.

以下是Java Magazine文章中给出的示例(它是一个水獭种群算法..):

Set<Otter> otters = getOtters();
System.out.println(otters.stream()
    .filter(o -> !o.isWild())
    .map(o -> o.getKeeper())
    .filter(k -> k.isFemale())
    .into(new ArrayList<>())
    .size());
Run Code Online (Sandbox Code Playgroud)

我的问题是如果在Set内部迭代的中间,其中一个otter为null会发生什么?

我希望抛出NullPointerException,但也许我仍然坚持以前的开发范例(非功能),有人可以启发我应该如何处理它?

如果这确实抛出了NullPointerException,我发现该功能非常危险,只能如下所示:

  • 开发人员确保没有空值(可能使用以前的.filter(o - > o!= null))
  • 开发人员确保应用程序永远不会生成null otter或特殊的NullOtter对象来处理.

什么是最佳选择,或任何其他选择?

谢谢!

java null java-8 java-stream

78
推荐指数
5
解决办法
10万
查看次数

使用自定义比较器将流收集到TreeSet中

在Java 8中工作,我有这样的TreeSet定义:

private TreeSet<PositionReport> positionReports = 
        new TreeSet<>(Comparator.comparingLong(PositionReport::getTimestamp));
Run Code Online (Sandbox Code Playgroud)

PositionReport 是一个相当简单的类定义如下:

public static final class PositionReport implements Cloneable {
    private final long timestamp;
    private final Position position;

    public static PositionReport create(long timestamp, Position position) {
        return new PositionReport(timestamp, position);
    }

    private PositionReport(long timestamp, Position position) {
        this.timestamp = timestamp;
        this.position = position;
    }

    public long getTimestamp() {
        return timestamp;
    }

    public Position getPosition() {
        return position;
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用.

现在我想删除TreeSet positionReportswhere timestamp比某个值更旧的条目.但我无法弄清楚正确的Java 8语法来表达这一点.

这个尝试实际上是编译的,但是给了我一个TreeSet带有未定义比较器的新东西: …

java collections java-8

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

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