'create(java.lang.Object, java.lang.Runnable)' in 'sun.misc.Cleaner' cannot be applied to '()'怎么jiejue
时间: 2024-10-10 12:12:38 浏览: 15
`Cleaner` 是 Java 标准库 `sun.misc` 包下的一个工具类,它主要用于在垃圾回收之后执行一些清理工作。然而,当你看到类似 `create(Object, Runnable)` 这样的构造函数调用,但尝试用空参数列表 `()` 调用它时,这是不符合规范的,因为这个构造函数需要两个参数:
1. 第一个参数是一个 `Object` 对象,这通常是用于关联清理任务的数据。
2. 第二个参数是一个 `Runnable` 实现,表示清理工作的实际操作。
错误解决步骤如下:
1. **检查参数传递**:确认你在创建 `Cleaner` 实例时是否传入了正确的对象实例作为第一个参数,并提供了一个实现了 `Runnable` 接口的动作作为第二个参数。例如:
```java
Cleaner cleaner = Cleaner.create(new Object(), new Runnable() {
@Override
public void run() {
// 清理逻辑
}
});
```
2. **检查类兼容性**:确保你使用的 `Runnable` 实现类或者匿名内部类能够正确地处理 `cleaner` 的清理逻辑。
3. **异常处理**:如果这是一个静态代码块或初始化方法中发生的错误,可能需要捕获并处理 `NullPointerException` 或 `IllegalArgumentException` 等预期可能出现的异常。
4. **查阅文档**:如果你不确定构造函数的具体用法,可以查阅 `sun.misc.Cleaner` 类的官方文档或源码。
阅读全文