1

たとえば、次のように始まるクラスがあります

public class Class<T> {
    private ArrayList<Integer> x = new ArrayList<Integer>();

主に私がするとき

public class Main {
    public static void main(String args[]) {
        Class x = new Class();

x のすべての要素は整数型でなければなりません。どうすれば次のようなことClass x = new Integer/String ... Class();ができるので、x でオブジェクトの型を指定できますか?

4

4 に答える 4

1

ジェネリックを使用します。

public class YourClass<T>{
    private ArrayList<T> x = new ArrayList<T>();

次にメインで

public class Main{
    public static void main(String args[]){
        YourClass<Integer> x = new YourClass<Integer>();
}

また

YourClass<String> x = new YourClass<String>();

YourClass<T>IntegerString、または何でもかまいません。

于 2013-11-08T16:27:06.330 に答える
0

ポリモーフィズムとジェネリックで混乱していると思います。

あなたが欲しいもの:

Class x = new Integer();

ポリモーフィズムです。このステートメントは、Class が Integer の基本クラスである場合にのみ有効ですが、明らかにそうではありません。

Parent x = new Child();

次の場合に機能します

class Child extends Parent {
    ....
}

あなたが書いたクラス:

public class Class<T> {
    private ArrayList<Integer> x = new ArrayList<Integer>();
    ....
}

はジェネリック クラスですが、型パラメーターを使用しません。これは問題ではありませんが、クラスは引き続き機能します。あなたが言う時:

Class x = new Class();

タイプ T は単純に Object になります。ただし、この型パラメーターを使用しないため、効果はありません。

要約すると、あなたの声明は次のとおりです。

Class x = new Integer();

Integer には Class との「is a」関係がないため、決して機能しません。ジェネリックはこの目的には使用されません。

于 2013-11-08T16:35:59.763 に答える
0
Class<Integer> x = new Class<Integer>();

java.langパッケージで既に定義されているクラスの名前を使用しないでください。

于 2013-11-08T16:16:25.997 に答える