Java - ·ºÐÍ
<ÉÏÒ»½Ú
ÏÂÒ»½Ú>
Èç¹ûÎÒÃÇֻдһ¸öÅÅÐò·½·¨£¬¾ÍÄܹ»¶ÔÕûÐÎÊý×é¡¢×Ö·û´®Êý×éÉõÖÁÖ§³ÖÅÅÐòµÄÈκÎÀàÐ͵ÄÊý×é½øÐÐÅÅÐò£¬Õâ¸Ã¶àºÃ°¡¡£
Java·ºÐÍ·½·¨ºÍ·ºÐÍÀàÖ§³Ö³ÌÐòԱʹÓÃÒ»¸ö·½·¨Ö¸¶¨Ò»×éÏà¹Ø·½·¨£¬»òÕßʹÓÃÒ»¸öÀàÖ¸¶¨Ò»×éÏà¹ØµÄÀàÐÍ¡£
·ºÐÍÀ´ÌṩÁ˱àÒëʱÀàÐÍ°²È«¼ì²â»úÖÆ£¬¸Ã»úÖÆÔÊÐí³ÌÐòÔ±ÔÚ±àÒëʱ¼ì²âµ½·Ç·¨µÄÀàÐÍ¡£
ʹÓÃJava·ºÐ͵ĸÅÄÎÒÃÇ¿ÉÒÔдһ¸ö·ºÐÍ·½·¨À´¶ÔÒ»¸ö¶ÔÏóÊý×éÅÅÐò¡£È»ºó£¬µ÷Óø÷ºÐÍ·½·¨À´¶ÔÕûÐÍÊý×é¡¢¸¡µãÊýÊý×é¡¢×Ö·û´®Êý×éµÈ½øÐÐÅÅÐò¡£
ÏÂÃæÊǶ¨Òå·ºÐÍ·½·¨µÄ¹æÔò£º
ÒªÉùÃ÷Ò»¸öÓнçµÄÀàÐͲÎÊý£¬Ê×ÏÈÁгöÀàÐͲÎÊýµÄÃû³Æ£¬ºó¸úextends¹Ø¼ü×Ö£¬×îºó½ô¸úËüµÄÉϽ硣
ºÍ·ºÐÍ·½·¨Ò»Ñù£¬·ºÐÍÀàµÄÀàÐͲÎÊýÉùÃ÷²¿·ÖÒ²°üº¬Ò»¸ö»ò¶à¸öÀàÐͲÎÊý£¬²ÎÊý¼äÓöººÅ¸ô¿ª¡£Ò»¸ö·ºÐͲÎÊý£¬Ò²±»³ÆΪһ¸öÀàÐͱäÁ¿£¬ÊÇÓÃÓÚÖ¸¶¨Ò»¸ö·ºÐÍÀàÐÍÃû³ÆµÄ±êʶ·û¡£ÒòΪËûÃǽÓÊÜÒ»¸ö»ò¶à¸ö²ÎÊý£¬ÕâЩÀà±»³ÆΪ²ÎÊý»¯µÄÀà»ò²ÎÊý»¯µÄÀàÐÍ¡£
Java·ºÐÍ·½·¨ºÍ·ºÐÍÀàÖ§³Ö³ÌÐòԱʹÓÃÒ»¸ö·½·¨Ö¸¶¨Ò»×éÏà¹Ø·½·¨£¬»òÕßʹÓÃÒ»¸öÀàÖ¸¶¨Ò»×éÏà¹ØµÄÀàÐÍ¡£
·ºÐÍÀ´ÌṩÁ˱àÒëʱÀàÐÍ°²È«¼ì²â»úÖÆ£¬¸Ã»úÖÆÔÊÐí³ÌÐòÔ±ÔÚ±àÒëʱ¼ì²âµ½·Ç·¨µÄÀàÐÍ¡£
ʹÓÃJava·ºÐ͵ĸÅÄÎÒÃÇ¿ÉÒÔдһ¸ö·ºÐÍ·½·¨À´¶ÔÒ»¸ö¶ÔÏóÊý×éÅÅÐò¡£È»ºó£¬µ÷Óø÷ºÐÍ·½·¨À´¶ÔÕûÐÍÊý×é¡¢¸¡µãÊýÊý×é¡¢×Ö·û´®Êý×éµÈ½øÐÐÅÅÐò¡£
·ºÐÍ·½·¨:
Äã¿ÉÒÔдһ¸ö·ºÐÍ·½·¨£¬¸Ã·½·¨ÔÚµ÷ÓÃʱ¿ÉÒÔ½ÓÊÕ²»Í¬ÀàÐ͵IJÎÊý¡£¸ù¾Ý´«µÝ¸ø·ºÐÍ·½·¨µÄ²ÎÊýÀàÐÍ£¬±àÒëÆ÷Êʵ±µØ´¦Àíÿһ¸ö·½·¨µ÷Óá£ÏÂÃæÊǶ¨Òå·ºÐÍ·½·¨µÄ¹æÔò£º
- ËùÓзºÐÍ·½·¨ÉùÃ÷¶¼ÓÐÒ»¸öÀàÐͲÎÊýÉùÃ÷²¿·Ö£¨ÓɼâÀ¨ºÅ·Ö¸ô£©£¬¸ÃÀàÐͲÎÊýÉùÃ÷²¿·ÖÔÚ·½·¨·µ»ØÀàÐÍ֮ǰ£¨ÔÚÏÂÃæÀý×ÓÖеÄ<E>£©¡£
- ÿһ¸öÀàÐͲÎÊýÉùÃ÷²¿·Ö°üº¬Ò»¸ö»ò¶à¸öÀàÐͲÎÊý£¬²ÎÊý¼äÓöººÅ¸ô¿ª¡£Ò»¸ö·ºÐͲÎÊý£¬Ò²±»³ÆΪһ¸öÀàÐͱäÁ¿£¬ÊÇÓÃÓÚÖ¸¶¨Ò»¸ö·ºÐÍÀàÐÍÃû³ÆµÄ±êʶ·û¡£
- ÀàÐͲÎÊýÄܱ»ÓÃÀ´ÉùÃ÷·µ»ØÖµÀàÐÍ£¬²¢ÇÒÄÜ×÷Ϊ·ºÐÍ·½·¨µÃµ½µÄʵ¼Ê²ÎÊýÀàÐ͵Äռλ·û¡£
- ·ºÐÍ·½·¨·½·¨ÌåµÄÉùÃ÷ºÍÆäËû·½·¨Ò»Ñù¡£×¢ÒâÀàÐͲÎÊýÖ»ÄÜ´ú±íÒýÓÃÐÍÀàÐÍ£¬²»ÄÜÊÇÔʼÀàÐÍ£¨Ïñint,double,charµÄµÈ£©¡£
ʵÀý:
ÏÂÃæµÄÀý×ÓÑÝʾÁËÈçºÎʹÓ÷ºÐÍ·½·¨´òÓ¡²»Í¬×Ö·û´®µÄÔªËØ£º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( " Array doubleArray contains:" ); printArray( doubleArray ); // pass a Double array System.out.println( " Array characterArray contains:" ); printArray( charArray ); // pass a Character array } }ÔËÐнá¹ûÈçÏÂËùʾ£º
Array integerArray contains: 1 2 3 4 5 6 Array doubleArray contains: 1.1 2.2 3.3 4.4 Array characterArray contains: H E L L O
ÓнçµÄÀàÐͲÎÊý:
¿ÉÄÜÓÐʱºò£¬Äã»áÏëÏÞÖÆÄÇЩ±»ÔÊÐí´«µÝµ½Ò»¸öÀàÐͲÎÊýµÄÀàÐÍÖÖÀ෶Χ¡£ÀýÈ磬һ¸ö²Ù×÷Êý×ֵķ½·¨¿ÉÄÜֻϣÍû½ÓÊÜNumber»òÕßNumber×ÓÀàµÄʵÀý¡£Õâ¾ÍÊÇÓнçÀàÐͲÎÊýµÄÄ¿µÄ¡£ÒªÉùÃ÷Ò»¸öÓнçµÄÀàÐͲÎÊý£¬Ê×ÏÈÁгöÀàÐͲÎÊýµÄÃû³Æ£¬ºó¸úextends¹Ø¼ü×Ö£¬×îºó½ô¸úËüµÄÉϽ硣
ʵÀý:
ÏÂÃæµÄÀý×ÓÑÝʾÁË“extends”ÈçºÎʹÓÃÔÚÒ»°ãÒâÒåÉϵÄÒâ˼“extends”£¨Àࣩ»òÕß“implements”£¨½Ó¿Ú£©¡£¸ÃÀý×ÓÖеķºÐÍ·½·¨·µ»ØÈý¸ö¿É±È½Ï¶ÔÏóµÄ×î´óÖµ¡£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 ", 3, 4, 5, maximum( 3, 4, 5 ) ); System.out.printf( "Maxm of %.1f,%.1f and %.1f is %.1f ", 6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) ); System.out.printf( "Max of %s, %s and %s is %s ","pear", "apple", "orange", maximum( "pear", "apple", "orange" ) ); } }ÔËÐнá¹ûÈçÏÂËùʾ£º
Maximum of 3, 4 and 5 is 5 Maximum of 6.6, 8.8 and 7.7 is 8.8 Maximum of pear, apple and orange is pear
·ºÐÍÀà:
·ºÐÍÀàµÄÉùÃ÷ºÍ·Ç·ºÐÍÀàµÄÉùÃ÷ÀàËÆ£¬³ýÁËÔÚÀàÃûºóÃæÌí¼ÓÁËÀàÐͲÎÊýÉùÃ÷²¿·Ö¡£ºÍ·ºÐÍ·½·¨Ò»Ñù£¬·ºÐÍÀàµÄÀàÐͲÎÊýÉùÃ÷²¿·ÖÒ²°üº¬Ò»¸ö»ò¶à¸öÀàÐͲÎÊý£¬²ÎÊý¼äÓöººÅ¸ô¿ª¡£Ò»¸ö·ºÐͲÎÊý£¬Ò²±»³ÆΪһ¸öÀàÐͱäÁ¿£¬ÊÇÓÃÓÚÖ¸¶¨Ò»¸ö·ºÐÍÀàÐÍÃû³ÆµÄ±êʶ·û¡£ÒòΪËûÃǽÓÊÜÒ»¸ö»ò¶à¸ö²ÎÊý£¬ÕâЩÀà±»³ÆΪ²ÎÊý»¯µÄÀà»ò²ÎÊý»¯µÄÀàÐÍ¡£
ʵÀý:
ÈçÏÂʵÀýÑÝʾÁËÎÒÃÇÈçºÎ¶¨ÒåÒ»¸ö·ºÐÍÀà;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 ", integerBox.get()); System.out.printf("String Value :%s ", stringBox.get()); } }ÔËÐнá¹ûÈçÏÂËùʾ£º
Integer Value :10 String Value :Hello World
<ÉÏÒ»½Ú
ÏÂÒ»½Ú>