0

私は現在、Peopleという別のクラスを介して拡張している抽象クラスを使用しています

public abstract class MediaContainer<T> {
    abstract T DisplayName(T dispname);
}

しかし、2番目にそれをオーバーライドしようとすると、エラーが発生します

public class People<T> extends MediaContainer<T> {
    @Override public T DisplayName(T person){
        return System.out.println(person);
    }
}
4

1 に答える 1

6

エラーは次の行にあると思います。

return System.out.println(Person);

printlnを返します。メソッドは return を返す必要がvoidあります。そのメソッドがその名前が示すように出力のみを目的としている場合は、 return に変更してください。DisplayNameTSystem.outvoid

注:より質の高いヘルプを取得し、反対票を避けるために、質問にはより多くの情報を提供してください。コンパイル エラーの場合は、常にエラー メッセージとエラーが発生している正確な行を含めてください。

編集:補足として、クラスの名前に基づいて、クラスに制限付きの型パラメーターを使用する必要があるようですPeople:

public class People<T extends Person> extends MediaContainer<T> { ... }

または、型パラメーターを解決することもできます。

public class People extends MediaContainer<Person> { ... }

これにより、Peopleのメソッドは、含まれているオブジェクトとインスタンスとしてやり取りしたり、メソッドPersonを呼び出したりすることができます。これは、もちろん対応するクラスがPersonあることを前提としています。Person

于 2013-01-13T18:31:30.937 に答える