0

私はJavaのジェネリックに関連する何かに取り組んでおり、この例をインターネットで見つけまし。これは簡単な質問かもしれませんが、ジェネリックを扱った人から正しい答えを見つけたいと思います。このジェネリックメソッドは、入力引数としてさまざまなタイプの配列を受け取り、それらを表示します。ここで、コマンドラインからこれらの配列を読み取ることでこれを実行したいと思います。正しい方法を見つけるのを手伝ってくれませんか。ありがとう。

public class GenericMethodTest
    {
       // generic method printArray                         
       public static < E > void printArray( E[] inputArray )
       {
          // Display array elements              
             for ( E element : inputArray ){        
                System.out.printf( "%s ", element );
             }
             System.out.println();
        }

        public static void main( String args[] )
        {
            // Create arrays of Integer, Double and Character
            Integer[] intArray = { 1, 2, 3, 4, 5 };
            Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
            Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

            System.out.println( "Array integerArray contains:" );
            printArray( intArray  ); // pass an Integer array

            System.out.println( "\nArray doubleArray contains:" );
            printArray( doubleArray ); // pass a Double array

            System.out.println( "\nArray characterArray contains:" );
            printArray( charArray ); // pass a Character array
        } 
    }
4

1 に答える 1

2

コマンドラインの一部としてデータ型を含めるか、ヒューリスティックによって型を検出するルーチンを用意する必要があると思います。何かのようなもの

java GenericMethodTest "doubleArray" "1.1 2.2"

ここで、タイプと配列の2つの引数があります。次に、2番目の引数を文字列から配列に変換するコンストラクターが必要になります。

public DoubleArray (String sin) {
    String[] ss = sin.split(" ")'
    double dd[] = new Double[ss.length];
    for (String s : ss) {
        dd[i++] = new Double(s);
    }
}

私はこの種のことを科学プログラミングでよく行いますが、通常はデータ型の特殊なケースになります。プログラムは、整数、文字列、または倍精度浮動小数点数をどのように認識しますか?あなたはそれを言わなければならないか、あなたはそれに推測する機会を与えなければなりません。

于 2012-04-25T09:03:24.050 に答える