问题标签 [constructor-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
780 浏览

java - 内部类的构造函数引用在运行时因 VerifyError 而失败

我正在使用 lambda 为内部类构造函数创建供应商ctx -> new SpectatorSwitcher(ctx)。IntelliJ 建议我改为SpectatorSwitcher::new改为。SpectatorSwitcher 是我正在使用的类的非静态内部类。建议的代码编译得很好(使用 maven),但我在执行时得到以下 VerifyError:

为什么 javac / maven 在编译时没有失败但仍然产生无效的字节码?

编辑:问题似乎比简单的调用复杂得多,这是重现它所需的代码:

0 投票
2 回答
2845 浏览

java - 使用本地类时构造函数引用无效?

给定以下代码:

我的 IDE 没有给我任何错误。也就是说,直到我尝试构建项目并运行它。当我这样做时,它会给我一个编译器错误,如下所示:

现在,我认为,鉴于错误消息,如果 foo() 是静态的,则不会发生这种情况。非常正确,只有当 foo() 是一个实例方法时才会发生这种情况。只有当 LocalFoo 是实例方法中的本地类时,才会发生这种情况,并且只有在使用构造函数引用(即从不使用常规方法引用)时才会发生。

更重要的是,如果我将第 21 行更改为

编译器突然没有错误。

所以回顾一下。如果我尝试在实例方法中声明的本地类上使用构造函数引用,编译器会抱怨无法访问构造函数,对此我感到困惑。

如果有人可以阐明为什么会发生这种情况,将不胜感激。谢谢。

0 投票
1 回答
15009 浏览

kotlin - Kotlin 中有构造函数引用吗?

在 Java 中,我们有Class::new构造函数引用的语法。我知道,方法有可调用的引用,但是构造函数呢?对我来说,一个典型的用例是工厂。

0 投票
1 回答
9499 浏览

java - Java 8 构造函数方法参考

我正在阅读 Java 8 书,它附带了一个我复制的示例:

实施者:

来电者:

如果调用此方法,则将以下内容打印到输出中:

一切都很好,但是如果我使用方法引用而不是perform message打印方法!为什么会这样,我错过了什么吗?

如果我使用此代码:

或者这段代码:

这是打印的:

不打印异常消息或其他任何内容。我正在使用 Java 8 1.8.25 64 位。

更新

对于像我一样正在学习的读者来说,这是正确的运行代码。

我创建了一个调用者类。

因为我需要实现一个空方法“从 Action 功能接口执行”,我需要将它作为参数传递给类构造函数MethodReference,所以我引用了“MethodReferenceCall 的构造函数,它是一个空构造函数”,我可以使用它。

0 投票
1 回答
254 浏览

java-8 - How do I use [TypeArguments] with a constructor reference in Java 8?

Section 15.13 of the Java Language Specification for Java 8 describes this form of the method reference syntax for creating a constructor reference:

For example:

That all works fine, but it seems that absolutely anything (excluding primitives) can be also supplied for the [TypeArguments] and everything still works:

Here's a silly example to prove the point:

A few questions arising:

[1] Since the String class doesn't even use generics, is it valid that the compiler allows the creation of that test2 constructor reference with those meaningless [TypeArguments]?

[2] What would be a meaningful example of using [TypeArguments] when creating a constructor reference?

[3] Under what conditions is it essential to specify [TypeArguments] when creating a constructor reference?

0 投票
3 回答
3538 浏览

java - Java 8 可以动态实现接口以供方法参考吗?

我学习了 Java 8 的新特性。

我正在玩不同的例子,我发现了一个奇怪的行为:

这段代码编译成功,但我不知道它是如何工作的。

为什么Test::new可以作为供应商接受?

供应商界面看起来很简单:

0 投票
1 回答
173 浏览

java - 默认方法中的自动构造函数匹配

我有一个PersonFactory界面如下:

Person班级:

我希望能够Person像这样实例化我的 s:

有没有办法让 Java 编译器通过匹配的签名自动选择正确的构造函数PersonFactory.create()

0 投票
1 回答
1361 浏览

generics - 如何将类型参数传递给泛型类构造函数引用?

假设以下代码:

我通过将 JavaFX 属性(SimpleIntegerProperty, SimpleStringProperty, ... 和SimpleObjectProperty<T>)传递给通用类构造函数() -> Property<T>参数遇到了这个问题,其中传递::SimpleIntegerProperty没有问题,而::SimpleObjectProperty像上面的示例代码一样失败。

是否可以在这里改进编译器或允许将类型参数传递给构造函数/函数引用?在这里使用构造函数引用而不是简单的 lambda 表达式是否有意义?它编译有什么不同吗?

0 投票
1 回答
94 浏览

android - 如何在类中创建泛型类型的对象

我有以下课程

如何TViewHolder在我的类中创建类型的对象。

0 投票
5 回答
5374 浏览

java - Runnable::new 与新的 Runnable()

为什么以下示例中的第一个不起作用?

  • run(R::new);方法R.run没有被调用。
  • run(new R());方法R.run 调用。

这两个示例都是可编译的。

输出是:

在第一个例子中,R构造函数被调用,它返回 lambda(它不是对象):

但是,如何成功编译示例?