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"

你有两个参数,类型和数组。然后您将需要一个构造函数,它将第二个参数从字符串转换为数组,例如

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 回答