題目描述

泛型方法是一種使用單一方法處理多種資料型態的一個非常有效的方式。這個題目將會測試您對Java泛型方法的了解。



您將會有一個整數陣列和一個字串陣列,您必須要寫一個printArray方法,可以輸出這兩種陣列的所有元素,也就是說這個方法要可以同時接受字串陣列和整數陣列的輸入。

原題網址

https://www.hackerrank.com/challenges/java-generics

輸出格式

輸出以下內容:

1
2
3
Hello
World

解題概念

利用擁有泛型參數的Printer類別產生出指定泛型型態的Printer物件,即可產生針對不同型態之陣列資料的printArray方法。

參考答案

import java.lang.reflect.Method;

public class Solution {

    public static void main(final String[] args) {

        final Printer myPrinter = new Printer();
        Integer[] intArray = {1, 2, 3};
        String[] stringArray = {"Hello", "World"};
        myPrinter.printArray(intArray);
        myPrinter.printArray(stringArray);
        int count = 0;
        for (Method method : Printer.class.getDeclaredMethods()) {
            String name = method.getName();
            if (name.equals("printArray")) {
                count++;
            }
        }

        if (count > 1) {
            System.out.println("Method overloading is not allowed!");
        }
        assert count == 1;

    }
}

class Printer<T> {

    public void printArray(final T[] array) {
        for (final T o : array) {
            System.out.println(o);
        }
    }
}