Java:从扩展它的通用列表中调用接口的函数

Nol*_*wer 1 java generics interface arraylist

我希望有一个对象列表,它们都从包含函数go()的同一接口继承.

public interface goers{
    public void go();
}
Run Code Online (Sandbox Code Playgroud)

现在我有3个类都可以实现,为了简单起见,我们只需要将它们称为A,B和C.

在另一个班级,我有一个List<Class<? extends goers>>我想做的.

for (Class<? extends goers> gos : list)
    {
        gos.go();
    }
Run Code Online (Sandbox Code Playgroud)

但它不会编译,因为编译器没有从应用于列表的所有成员的接口中获取go方法.

Lou*_*man 7

A List<Class<? extends goers>>没有goers可以调用的实例.go().你只有类,而不是那些类的任何实例.没有什么可以打电话.go()的.

您可以尝试实例化这些类,或者首先使用一个类,List<goers>这样您就可以调用它们如何使用接口.