1

他のクラスの 1 つのオブジェクトを格納できる汎用コンテナー クラスを作成したいと考えています。これは合理的なアプローチかもしれないと思いました:

class Container <T> {
    private T thing;

    public void Store(T obj) {
        thing = obj;
    }

    public T ReturnIt() {
        return thing;
    }
}

これを Book クラスと一緒に試してみると、次のエラー メッセージが表示されます。

これがpublic T ReturnIt() { return thing; }エラーの原因である可能性がありますか? これは Container-class に含まれるオブジェクトを返す方法が間違っているのでしょうか? -Xlint:unchecked でコンパイルしようとしたとき、それ以上の情報は得られませんでした。エラーメッセージについてどう思いますか?

エラーの原因となったコード:

class GenericContainer {

    public static void main(String[] args) {
        Container BookStorage = new Container <Book>();
        Book thejavabook = new Book("The Java book");   
        BookStorage.Store(thejavabook);
    }       
}

class Book {
    private String title;
    Book(String title) {
        this.title = title;
    }
}

class Container <T> {
    private T thing;

    public void Store(T obj) {
        thing = obj;
    }

    public T ReturnIt() {
        return thing;
    }
}
4

2 に答える 2

3

BookStorage 変数は次のように定義する必要があります。

Container<Book> BookStorage = new Container <Book>();
于 2013-01-23T20:00:10.597 に答える
2

問題を修正し、Java 命名基準を使用するようにコードを書き直しました。

package com.sandbox;

public class Sandbox {

    public static void main(String[] args) {
        Container<Book> bookStorage = new Container<Book>();  //fix for your warning!
        Book theJavaBook = new Book("The Java book");
        bookStorage.store(theJavaBook);
    }
}


class Book {
    private String title;   //this is unused

    Book(String title) {
        this.title = title;
    }
}


class Container<T> {
    private T thing;

    public void store(T obj) {
        thing = obj;
    }

    public T returnIt() {
        return thing;
    }
}

この行の強調:

Container<Book> bookStorage = new Container<Book>();  //fix for your warning!

<Book>課題の左側に を入れるのを忘れました。

于 2013-01-23T20:02:06.993 に答える