با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. متدهای Generic در جاوا و کلاسهای Generic ، برنامه نویسان را قادر می سازند تا با یک اعلام تک متدی، مجموعه ای از متدهای مربوطه، یا با یک اعلام تک کلاس، مجموعه ای از انواع مرتبط،را به ترتیب مشخص کنند. Generics همچنین ایمنی نوع کامپایل را ارائه می دهد که به برنامه نویسان اجازه می دهند تا در زمان کامپایل شدن انواع کد نامعتبر را بدست آورند.با استفاده از مفهوم Generic در جاوا، ما می توانیم یک متد عمومی را برای مرتب سازی آرایه ای از اشیاء بنویسیم. برای آشنایی با Generic در جاوا و متدهای generic در جاوا در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه ی مباحث به منظور آشنایی با Generic در جاوا به ساختار و طرز استفاده از Generic در جاوا اشاره کرده ایم.
شما می توانید یک توضیح متد Generic را که می تواند با آرگومان های مختلف نامیده شود را بنویسید.
مثال :
مثال زیر نشان می دهد که چگونه می توانیم یک آرایه از انواع مختلف را با استفاده از یک متد Generic چاپ کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 } } |
نتیجه ی اجرای برنامه ی فوق بصورت زیر خواهد بود:
1 2 3 4 5 6 7 8 | Array integerArray contains: 1 2 3 4 5 Array doubleArray contains: 1.1 2.2 3.3 4.4 Array characterArray contains: H E L L O |
ممکن است زمانی شما بخواهید انواع مختلفی را که یک پارامتر type دارند را محدود کنید.
برای اعلام یک پارامتر type محدود، نام پارامتر type و به دنبال آن کلمه کلیدی extends قرار می گیرد.
مثال:
نمونه زیر نشان می دهد که extends چگونه به معنای عمومی به معنای “گسترش” و یا “پیاده سازی” استفاده می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class MaximumTest { // determines the largest of three Comparable objects public static <T extends Comparable<T>> T maximum(T x, T y, T z) { T max = x; // assume x is initially the largest if(y.compareTo(max) > 0) { max = y; // y is the largest so far } if(z.compareTo(max) > 0) { max = z; // z is the largest now } return max; // returns the largest object } public static void main(String args[]) { System.out.printf("Max of %d, %d and %d is %d\n\n", 3, 4, 5, maximum( 3, 4, 5 )); System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n", 6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 )); System.out.printf("Max of %s, %s and %s is %s\n","pear", "apple", "orange", maximum("pear", "apple", "orange")); } } |
نتیجه ی اجرای کد فوق بصورت زیر خواهد بود:
1 2 3 4 5 | Max of 3, 4 and 5 is 5 Max of 6.6,8.8 and 7.7 is 8.8 Max of pear, apple and orange is pear |
یک اعلام Generic شبیه یک اعلامیه کلاس غیر عمومی به نظر می رسد، به جز اینکه نام کلاس با یک پارامتر type دنبال می شود.
بخش پارامتر type یک کلاس Generic می تواند یک یا چند پارامتر type را با کاما جدا کند.
این کلاس ها به عنوان کلاس های پارامتر شده یا انواع پارامترها شناخته می شوند.
مثال – مثال زیر نشان می دهد که چگونه می توانیم یک کلاس Generic را تعریف کنیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Box<T> { private 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()); } } |
نتیجه ی اجرای کد فوق در جاوا بصورت زیر خواهد بود:
1 2 | Integer Value :10 String Value :Hello World |
متدهای کلاس Generic در جاوا به شما اجازه می دهد تا با فراخوانی یک متد به چند متد دیگر نیز دسترسی داشته یا آن ها را فراخوانی کنید. همچنین می توانید اعمالی از جمله مرتب سازی عناصر یک آرایه را انجام دهید. در بخش بعدی به مبحث سریال سازی در جاوا خواهیم پرداخت.