Generic یا جنریک <> یعنی :
-
یک نوع پیاده سازی کلاس و یا متد است که با انواع مختلفی از داده ها در ورودی بدون مشخص کردن نوع آن انجام میشود.ورودی می تواند Int,String,Double,.... و یا حتی از جنس آبجکتی از کلاس باشدو
-
پاس کردن آرگومان را می توانیم به زمان Run Time موکول کنیم و در آنجا با توجه به نیاز خود مقادیر ورودی و جنس آنها را مشخص کنیم.
-
با توجه به اینکه <>ArrayList ها هم این خاصیت را دارند پس از نوع جنریک می باشند.
به مثال زیر توجه کنید :
package genericmethod;
public class GenericMethod
{
//یک متد بانوع ورودی آرایه ای از هرنوع و خروجی
public static < E > void printArray( E[] inputArray )
{
//داخل متد عناصر ارایه رو چاپ میکنیم
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
public static void main( String args[] )
{
//تعریف سه آرایه از انواع موجود در جاوا برای استفاده در متد جنریک
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( "نتجیه استفاده برای آرایه نوع Integer:" );
printArray( intArray ); // pass an Integer array
System.out.println( "\nنتیجه متد برای آرایه نوع ِ Double:" );
printArray( doubleArray ); // pass a Double array
System.out.println( "\n نتیجه متد برای ارایه نوع کاراکتری:" );
printArray( charArray ); // pass a Character array
}
}
نتیجه اجرای کد بالا :
نتجیه استفاده برای آرایه نوع Integer:
1 2 3 4 5
نتیجه متد برای آرایه نوع ِ Double:
1.1 2.2 3.3 4.4
نتیجه متد برای ارایه نوع کاراکتری:
H E L L O
--------------------------------------------------------------------
یک مثال دیگه :
public class Box<T> {
//استفاده از نوع پارامتر پویا T
private T t;
//استفاده از نوع پارامتر پویا T در تعریف متد
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
حالا از کد بالا در کد پایین استفاده می کنیم توجه کنید :
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.add(new Integer(10));
stringBox.add(new String("Hello World"));
System.out.printf("Integer Value :%d\n\n", integerBox.get());
System.out.printf("String Value :%s\n", stringBox.get());
}
و اما خروجی :
Integer Value :10
String Value :Hello World