如何从封闭的外部 class 调用与在匿名 class 中实现的方法同名的方法?
How do I call a method of same name from an enclosing outer class as the one being implemented in an anonymous class?
我正在使用匿名 class 实现一个接口,returns 一个预定义的文件夹路径作为一个字符串并且需要一个尾部斜杠。封闭对象的 class 已经实现为 getDataFolder()
但 returns 是 File
对象。这很好,除了我正在实施的方法具有相同的名称...
如果我这样实现它,那么我会得到一个 Whosebug 错误,因为实现的方法试图调用自身而不是外部 class 方法。
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return getDataFolder() + java.io.File.separator;
}
};
来自外部 class 的方法在范围内,但没有被匿名 class 直接继承,所以我不能在这里简单地使用 super
。
如何从这个匿名内部 class 方法的外部 class 显式调用我想要的方法?
如果封闭 class 中的方法是非静态的,则这样调用它:
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return EnclosingClassName.this.getDataFolder() + java.io.File.separator;
}
};
如果方法是静态的,那就简单一点:
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return EnclosingClassName.getDataFolder() + java.io.File.separator;
}
};
我正在使用匿名 class 实现一个接口,returns 一个预定义的文件夹路径作为一个字符串并且需要一个尾部斜杠。封闭对象的 class 已经实现为 getDataFolder()
但 returns 是 File
对象。这很好,除了我正在实施的方法具有相同的名称...
如果我这样实现它,那么我会得到一个 Whosebug 错误,因为实现的方法试图调用自身而不是外部 class 方法。
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return getDataFolder() + java.io.File.separator;
}
};
来自外部 class 的方法在范围内,但没有被匿名 class 直接继承,所以我不能在这里简单地使用 super
。
如何从这个匿名内部 class 方法的外部 class 显式调用我想要的方法?
如果封闭 class 中的方法是非静态的,则这样调用它:
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return EnclosingClassName.this.getDataFolder() + java.io.File.separator;
}
};
如果方法是静态的,那就简单一点:
resourceManager = new PluginResourceManager(this) {
@Override
public String getDataFolder()
throws IOException
{
return EnclosingClassName.getDataFolder() + java.io.File.separator;
}
};