不明确的规则定义了“T...”的类型

2024-01-01

以下测试之一不起作用。为什么?

public class SortedInterfacesTest {

private static final Logger log = LoggerFactory.getLogger(SortedInterfacesTest.class);

<T> void forAll(Consumer<T> consumer, T... values) { }

@Test
public void firstTest() {
    forAll(Shape::draw, new MyShape(), new Universal());
}

@Test
public void secondTest() {
    log.info("\njava.version {}", System.getProperty("java.version"));
    forAll(Picture::draw, new MyPicture(), new Universal());
}

interface Shape { void draw(); }
interface Marker { }
interface Picture { void draw(); }

class MyShape implements Marker, Shape { public void draw() {} }
class MyPicture implements Marker, Picture { public void draw() {} }
class Universal implements Marker, Picture, Shape { public void draw() {} }
}

毕竟,一对 Shape 和 MyShape 是一对对称的 Picture 和 MyPicture。

第二次测试失败并出现以下错误(使用 cli:mvn.exe 测试):

-------------------------------------------------------
 T E S T S (Java.version: 1.8.0_102)
-------------------------------------------------------
Running SortedInterfacesTest
01:36:28.234 [main] INFO  SortedInterfacesTest - 
java.version 1.8.0_102
Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.223 sec <<< FAILURE!
secondTest(SortedInterfacesTest)  Time elapsed: 0.009 sec  <<< ERROR!
java.lang.BootstrapMethodError: call site initialization exception
    at java.lang.invoke.CallSite.makeSite(Unknown Source)
    at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(Unknown Source)
    at java.lang.invoke.MethodHandleNatives.linkCallSite(Unknown Source)
    at SortedInterfacesTest.secondTest(SortedInterfacesTest.java:18)

Java 9+181 上的堆栈跟踪:

java.lang.BootstrapMethodError: call site initialization exception

    at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:385)
    at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:250)
    at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:240)
    at play.Play.firstTest(Play.java:12)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type interface play.Play$Marker; not a subtype of implementation type interface play.Play$Shape
    at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:254)
    at java.base/java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:311)
    at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:332)
    ... 25 more

一个新的错误已被注册为 JDK-8191655。 解决方法:使用普通的 lambda 表达式而不是方法引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不明确的规则定义了“T...”的类型 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 任意通用列表的通配符

    我有一个类 MyClass 它不是通用的 包含任意 TList 并对其执行某些操作 我希望用通用 TList 替换 TList 但 MyClass 必须保持非通用 由于 Delphi 是不变的 这样的事情是行不通的 list1 TList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • 如何使用 Flutter 或者 Rails 从头开始​​构建移动应用程序?

    我是 Rails Web 后端和前端开发人员 我想构建一个移动应用程序 一个简单的应用程序 包含产品 用户 地理定位 可能还包含付款 使用 Stripe 等第三方 我认为Flutter框架是一个不错的选择 看起来很简单 但我不知道 Dart
  • 在使用 Spotify 的 Spotipy 缓存令牌时遇到问题?

    我正在尝试使用 Spotipy 访问用户的 Spotify 库 但遇到了一些麻烦 作为背景 我使用 Flask SQLAlchemy 和 Flask Login 我看着本教程 https github com sheagcraig actu
  • pycharm_helpers 的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”

    我正在尝试在 docker 容器内运行 pycharm 调试器 这在过去对我有用 所以我知道我的配置是正确的 但是在我的一次 docker 容器清除期间 我必须删除 pycharm 需要的容器 pycharm helpers 不幸的是 py
  • 将非 ASCII 字符替换为单个空格

    我需要用空格替换所有非 ASCII x00 x7F 字符 令我惊讶的是 这在 Python 中并不容易 除非我遗漏了一些东西 以下函数只是删除所有非 ASCII 字符 def remove non ascii 1 text return j
  • 验证生成的 JAXB 类(JSR 303 / Spring)

    我使用 JAXB maven jaxb2 plugin 从架构 请求和响应 生成域对象我想为几个属性添加验证 notnull empty 我想要自定义 Bean 验证 该应用程序是一个 REST 服务 我正在使用 Spring 3 和 JS
  • VBA Excel 形状

    我使用了一个小子程序将图片插入到我的工作表中 ActiveSheet Pictures Insert URL Select 这适用于 Excel 2003 Windows 但不再适用于 Excel 2011 Mac 因此我修改了我的子程序
  • 为每一行创建的 Pandas DataFrame

    我正在尝试将 JSON 数据从 API 传递到 Pandas DataFrame 我无法得到pandas read json处理 API 数据 所以我确信这不是最好的解决方案 但我目前有for loop运行 JSON 来提取我想要的值 这是
  • 在 AWS 上使用 Apache-Spark 加载数据

    我正在 Amazon Web Service AWS EC2 上使用 Apache Spark 来加载和处理数据 我创建了一个主节点和两个从节点 在主节点上 我有一个目录data包含所有要处理的csv格式的数据文件 现在 在我们提交驱动程序
  • Android Eclipse 问题无法创建 BuildConfig 类

    我在 Eclipse 中清理 Android 项目时收到 无法创建 BuildConfig 类 错误 我最近为移动开发人员安装了 Eclipse Juno 当我尝试导入现有的 Android 应用程序时 Eclipse 开始出现这种错误 如
  • 使用 consteval 代替 constexpr 函数有哪些优点?

    我知道需求的差异 我最感兴趣的是它带来的代码质量带来的好处 我能想到的几件事 读者只需阅读函数签名即可知道该函数是在编译时评估的 编译器可能会发出更少的代码 因为constevalfns 在运行时从不使用 这是推测 我没有这方面的真实数据
  • 数据库中什么是半连接?

    我在尝试理解半连接的概念以及它与传统连接的不同之处时遇到了麻烦 我已经尝试过一些文章 但对解释不满意 有人可以帮助我理解它吗 简单的例子 让我们使用左外连接选择成绩的学生 SELECT DISTINCT s id FROM students
  • 如何使用回调函数在 TypeScript 中保留词法范围

    我有一个 TypeScript 类 其中有一个我打算用作回调的函数 removeRow this MyClass void this is now the window object I must use this to get the c
  • Windows Python (<=3.10.2) 无法运行 `python -m venv .venv`

    此问题已解决 并向 Python org 提交了错误报告 看看我的下面自我回答 https stackoverflow com a 71041562 4516027寻求解决方法 直到在未来版本的 Python 中修复为止 我的一台电脑被这个
  • LIBGDX 创建主菜单

    所以我想为我的游戏创建一个主菜单 但我不知道下一步该做什么 我已经完成了所有的艺术工作 并且全部分层并打包在 pack 中 public class MainMenu implements Screen CrazyZombies game
  • 使用比较器的意外输出

    我有以下程序 import java util public class Test public static void main String args Integer array 3 1 4 1 5 9 Arrays sort arra
  • MYSQLi真实转义函数显示换行符和回车符

    我有一个文本区域 当我尝试通过 MYSQLi 真实转义函数和 nl2br 进行转义和清理时 简单的输出给了我奇怪的结果 我的PHP代码 the odd输出是 i love this r n r nand this is gonna be f
  • Angularfire2,startAfter() 不适用于分页

    根据 firebase 文档 这是如何做到的 var first db collection cities orderBy population limit 25 return first get then function documen
  • 改进分配器算法实现的建议

    我有一个 Visual Studio 2008 C 应用程序 其中使用标准容器的自定义分配器 以便它们的内存来自内存映射文件而不是堆 该分配器用于 4 种不同的用例 104字节固定大小结构std vector lt SomeType MyA
  • python多处理中父进程全局变量如何复制到子进程

    乌班图20 04 我对python中不同子进程访问全局变量的理解是这样的 全局变量 假设b 可用于写时复制能力的每 个子进程 如果子进程修改了该变量 则复制b首先创建该副本 然后修改该副本 此更改对父进程不可见 稍后我将就这部分提出问题 我
  • 不明确的规则定义了“T...”的类型

    以下测试之一不起作用 为什么 public class SortedInterfacesTest private static final Logger log LoggerFactory getLogger SortedInterface