java - 从作为参数提供给构造函数的 lambda 调用实例方法
问题描述
我有一堂课Foo
和TryFoo
import java.util.function.Consumer;
public class Foo {
Consumer<Integer> c;
public Foo(Consumer<Integer> e) {
this.c = c;
}
void bar(){}
}
class TryFoo{
public static void main(String... args){
Foo e = new Foo((someInt)-> /*how do i reference bar?*/ );
}
}
如何Foo#bar()
从 lambda 调用方法?我尝试使用this.bar()
,Foo.this.bar()
但无济于事。setter 是另一种方式,但最好使用构造函数。
编辑1:Foo#bar
不是静态的。
解决方案
你不能不做bar
静态:
static void bar() {}
并调用它:
Foo e = new Foo((someInt)-> Foo.bar());
否则,如果没有实例对象来调用它,就无法调用实例方法。
推荐阅读
- python - 如何在 /accounts/register 处修复 UnboundLocalError
- php - 如何根据从另一个外键/ Laravel 6显示的外键显示表格
- python - Jupyter Notebook 500 内部服务器错误属性错误模块“打字”没有属性“AsyncGenerator”
- azure - 如何在 Azure Function 的 EventHubTrigger 连接字符串中为本地环境设置代理
- python - 用于在 python 中循环时匹配字母、数字和特殊章程的正则表达式
- python - 根据 df1 中的值在 df2 中保留一列
- node.js - 尝试在 Docker 中更新 NPM:代码 EISDIR
- python - 使用 SQLite3 TypeError 在 Python 中出现参数错误:+ 的不支持的操作数类型:'sqlite3.Cursor' 和 'str'
- c# - 在以前的属性中选择 null
- android - I18nManager.forceRtl(false) 在 android 中不起作用