匿名内部类可以向下转型吗、
时间: 2023-10-01 17:06:04 浏览: 48
匿名内部类是一个没有名字的内部类,它可以继承一个类或者实现一个接口。由于它没有名字,所以无法直接向下转型。但是,可以通过将匿名内部类赋值给一个具体类型的变量或者传递给一个接受该类型参数的方法,然后再进行向下转型。例如:
```
interface MyInterface {
void doSomething();
}
class MyClass {
void myMethod(MyInterface myInterface) {
// 向下转型
((Runnable) myInterface).run();
}
}
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.myMethod(new MyInterface() {
@Override
public void doSomething() {
System.out.println("Hello World!");
}
});
}
}
```
在上面的例子中,匿名内部类实现了`MyInterface`接口,但由于它没有名字,无法直接向下转型为`Runnable`接口。但是,在`MyClass`类的`myMethod`方法中,将`MyInterface`类型的参数强制转换为`Runnable`类型,从而实现了向下转型。