一般的な予備
我々は機能を実装したいと仮定します。配列要素の逆の動作を実現します。
機能要件のいかなる特定のタイプは、我々が定義されたタイプの8つの基本タイプと仮定する配列要素を、決定していません。どのように達成するために?
- 「オーバーロードされたメソッド」の手段とすることができます
public static int[] revArray(int[] m) {}
public static long[] revArray(int[] m) {}
このアプローチは、処理上の問題を簡単にするために、Javaは一般的な概念を提供し、あまりにも愚かです。
- ジェネリックは解決します
public class AboutGeneric {
public static <T> T[] revArray(T[] m) {
T t;
for (int i=0; i<m.length/2; i++) {
t = m[i];
m[i] = m[m.length-1-i];
m[m.length-1-i] = t;
}
return m;
}
}
。
- 一般的な徴候は、方法に使用ジェネリックを示します。
- Tは、特定のクラス型を表すように、ジェネリック(T)は唯一、クラス型とすることができます。
- 不確かなコーディングときに実行する際に、決定
public class Test {
public static void main(String[] args) {
AboutGeneric Generic = new AboutGeneric();
Integer[] IntegerArray = {1,2,3,4,5,6,7};
// 这里必须写成Integer而不能是int;
for (int num : IntegerArray) {
System.out.print(num);
}
System.out.println();
for (int num : Generic.revArray(IntegerArray)) {
System.out.print(num);
}
}
ジェネリッククラスの定義
public class MyGeneric <T> {
private T number;
public MyGeneric() {
}
public MyGeneric(T number) {
this.number = number;
}
public T getNumber() {
return number;
}
public void setNumber(T number) {
this.number = number;
}
}
後者のクラス名<T>は、クラスタイプとして後続の符号Tで、「一般的なフラグ」です。彼らの特定の状況では、実行時に決定します。
ジェネリック医薬品は、より多くのことができます。
public class MyGeneric <T, K> {
private T number;
public K object;
}