小编sko*_*isa的帖子

什么是Java 8中功能接口的"功能形状"?

在Java 8中,新包java.util.function包含许多功能接口.该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)对"函数形状"进行了多次引用:

  • 有几个基本的函数形状,包括Function(从T到R的一元函数),Consumer(从T到void的一元函数),Predicate(从T到boolean的一元函数)和Supplier(nilary函数到R).
  • 功能形状基于它们最常用的方式具有自然的特征.可以通过arity前缀修改基本形状以指示不同的arity,例如BiFunction(从T和U到R的二进制函数).
  • 还有其他派生函数形状,它们扩展了基本函数形状,包括UnaryOperator(扩展函数)和BinaryOperator(扩展BiFunction).

我之前从未听说过"函数形状"这个术语,除了上面的文档之外,我几乎找不到它的引用,但由于这是Oracle关于函数接口的正式文档,我想了解它.

任何人都可以提供"功能形状"的定义,并发明一个例子吗?它是计算机科学中的通用术语,还是仅与Java 8相关?函数形状如何与函数描述符相关(如(T) - > Predicate <T>接口的布尔值)?

更新 Brian Goetz的以下两条评论回答了我在这篇文章中提出的问题.

lambda java-8 functional-interface

5
推荐指数
1
解决办法
654
查看次数

升级到 TLSv1.3 时 SSLEngine 使用的变化

Java 11 随TLSv1.3支持发布,默认使用。

它在 HTTPS 和 SSL 套接字的上下文中工作正常,但似乎在使用时SSLEngine由于TLSv1.3行为的变化而存在额外的障碍。

因此,通过NIOusing有一个强大的通信实现,SSLEngineTLSv1.3启用时不再起作用。没有明显的错误,以异常或 SSL 错误的形式,两个节点只会来回发送 wrap/unwrap 消息并最终超时。

我对使用 TLSv1.2 的 SSLEngine 和使用 TLSv1.3 的 SSLEngine 之间的行为变化的确切列表感兴趣,如果可能的话,还有它们之间的迁移清单。不幸的是,Java 11 的 SSLEngine javadocs 没有这些信息——Java 11 中没有新方法,也没有对 TLSv1.3 的引用。

java nio sslengine java-11 tls1.3

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

&lt;option&gt;上的事件触发器在Webkit上不起作用

我想在下拉<select>列表上添加事件触发器。示例(jsFiddle):

$( document ).ready(function() {
    $('.lorem').click(function() {
        alert('ipsum');
    });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
  <option class="lorem">1</option>
  <option class="lorem">2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

使用Firefox,当我单击它时,它会正常触发。但是在webkit(Chrome / Safari等)上,它不起作用。为什么?

javascript jquery webkit eventtrigger

5
推荐指数
1
解决办法
49
查看次数

如何在Netbeans中创建Java项目,而不使用Maven作为默认值?

我目前正在尝试创建一个基本的Java项目。出现的第一个选项是“ Java with Maven”,我已经使用过,但是没有给我所需的“创建主类”选项。

我正在使用在Windows 10 x64上运行的Apache Netbeans IDE 11.0。我花了一整天的时间,更新并安装了我发现的最新JDK版本,但仍然无法正常工作。

我也已经阅读了此答案,但是它不起作用: 无法在Netbeans 8.2上创建项目

这是我得到的图像:

ProjectWizrdOnNetBeans11

任何帮助表示赞赏,谢谢。

java netbeans maven windows-10 netbeans-11

5
推荐指数
1
解决办法
3162
查看次数

由于非私有方法无法重写或实现超类型的方法,因此无法使用“&lt;&gt;”

我有以下指定的行为。

interface ValueEditorPopupView<T> {
  void setValue(T value);

  void setApplyEnabled();
}

abstract class ValueEditorPopup<T> implements ValueEditorPopupView<T> {
  @Override
  public void setApplyEnabled() {
    System.out.println("In ValueEditorPopup.setApplyEnabled()");
  }
}

class ListEditorTextField {
  private final ValueEditorPopup<String> popup;

  ListEditorTextField() {
    popup = new ValueEditorPopup<>() {
      @Override
      public void setValue(String value) {
        System.out.println("In Anonymous Class impl setValue()");
      }

      // When I add a method that is NOT defined in the abstract class/interface
      // I get an error for using the diamond operator in the class declaration above …
Run Code Online (Sandbox Code Playgroud)

java generics

5
推荐指数
1
解决办法
120
查看次数

java 20 解构功能中的错误?

以下是 Java 20 中的错误还是我遗漏了什么?如果您编译/运行以下程序,您将获得预期的打印输出。但是,如果您取消注释开关中的单行:

import static java.lang.System.*;
public class Main {
    record Point(int x, int y, Color color){}
    enum Color {RED, BLUE, YELLOW}
    public static void main(String[] args) {
        testSwitch(new Point(10,20,Color.BLUE));
        testSwitch(new Point(10,20,Color.RED));
        testSwitch("vbjhjbhbjhbj");
        testSwitch(1.012);
        testSwitch(Color.YELLOW);
    }
    static void testSwitch(Object o){
        switch(o){
            case null -> out.println("Null");
            case Color c -> out.println("Color: "+c);
            //case Point(var x, var y, Color c) when c == Color.RED -> out.printf("Red point x=%d, y=%d\n",x,y);
            case Point(var x, var y, var color) -> out.printf("Point x=%d, y=%d, …
Run Code Online (Sandbox Code Playgroud)

java java-20

5
推荐指数
1
解决办法
217
查看次数

如何使用 JSON-B 将 JSON 字符串反序列化为非公共类?

我创建了一个带有两个类的普通 Java 9 Maven 应用程序,以使用 JSON-B 测试 JSON 的序列化和反序列化。这是代码:

package com.jsonbdemos;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.JsonbConfig;

public class App {

    public static void main(String[] args) {
        Jsonb jsonb = JsonbBuilder.create(new JsonbConfig());
        String jsonData = "{\"creationDate\":\"2018-01-05\"}";

        // Create Widget object from JSON string.
        Widget widget = jsonb.fromJson(jsonData, Widget.class);
        System.out.println("JSON => object: " + widget.toString());

        // Serialize Widget object to JSON string.
        String jsonFromObject = jsonb.toJson(widget);
        System.out.println("object => JSON: " + jsonFromObject);
    }
}

package com.jsonbdemos;
import java.time.LocalDate;

public class Widget …
Run Code Online (Sandbox Code Playgroud)

java json json-deserialization jsonb-api

4
推荐指数
1
解决办法
2997
查看次数

如何解决 Netbeans 12.0 IllegalAccessError?

我刚刚安装了 Netbeans 12.0。当我开始我的第一个项目时,我在创建一个新的 Java 类后收到了一条意外的错误消息。关于我如何处理它的任何建议?

这是消息:

java.lang.IllegalAccessError: superclass access check failed: class org.netbeans.lib.nbjavac.services.CancelAbort (in unnamed module @0x439ece0a) cannot access class com.sun.tools.javac.util.Abort (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x439ece0a
Run Code Online (Sandbox Code Playgroud)

这是我的系统信息:

Product Version = Apache NetBeans IDE 12.0
Operating System = Windows 7 version 6.1 running on amd64
Java; VM; Vendor = 16.0.1; Java HotSpot(TM) 64-Bit Server VM 16.0.1+9-24; Oracle Corporation
Runtime:Java(TM) SE Runtime Environment 16.0.1+9-24
Java Home:c:\program files\java\jdk-16.0.1
System Locale Encoding: pt_BR (nb); Cp1252 …
Run Code Online (Sandbox Code Playgroud)

java netbeans java-16 netbeans-12

4
推荐指数
1
解决办法
1738
查看次数

升级到 Netbeans 13 时,为什么会出现 IllegalStateException:缺少托管模块 org.netbeans.libs.javacimpl?

将 Netbeans 从 12.6 升级到 13 后,Netbeans 无法启动。当我从命令行启动它时,我收到以下消息:

java.lang.IllegalStateException: Missing hosting module org.netbeans.libs.javacimpl for fragment org.netbeans.modules.nbjavac.impl
    at org.netbeans.ModuleManager.refineClassLoader(ModuleManager.java:909)
    at org.netbeans.StandardModule.classLoaderUp(StandardModule.java:527)
    at org.netbeans.ModuleManager.enable(ModuleManager.java:1330)
    at org.netbeans.ModuleManager.enable(ModuleManager.java:1254)
    at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:315)
    at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:251)
    at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:298)
    at org.netbeans.core.startup.Main.getModuleSystem(Main.java:156)
    at org.netbeans.core.startup.Main.getModuleSystem(Main.java:125)
    at org.netbeans.core.startup.Main.start(Main.java:282)
    at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
    at java.base/java.lang.Thread.run(Thread.java:829)
Run Code Online (Sandbox Code Playgroud)

什么原因?我该如何修复它?

netbeans netbeans-13

4
推荐指数
1
解决办法
1118
查看次数

React Native 错误“无法为 2097152KB 对象堆保留足够的空间”

我正在使用 React Native 并尝试创建调试构建,或者尝试使用“react-native run-anroid”命令在模拟器中加载构建。我收到以下错误:

VM 初始化期间发生错误无法为 2097152KB 对象堆保留足够的空间 Java HotSpot(TM) 客户端 VM 警告:忽略选项 MaxPermSize=512m;8.0 中删除了支持

请参阅下面的屏幕截图:

在此输入图像描述

我该如何解决这个错误?

react-native

3
推荐指数
1
解决办法
4274
查看次数