Java¹Ø¼ü×Ö½éÉÜÖ®final
×Ü½á¹Ø¼ü×ÖfinalµÄÓ÷¨¡£
author: ZJ 07-3-16
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
ÔÚJavaÖÐÉùÃ÷ÊôÐÔ¡¢·½·¨ºÍÀàʱ£¬¿ÉʹÓùؼü×ÖfinalÀ´ÐÞÊΡ£final±äÁ¿¼´Îª³£Á¿£¬Ö»Äܸ³ÖµÒ»´Î£»final·½·¨²»Äܱ»×ÓÀàÖØÐ´£»finalÀ಻Äܱ»¼Ì³Ð¡£
1£®final³ÉÔ±
ÉùÃ÷ final ×Ö¶ÎÓÐÖúÓÚÓÅ»¯Æ÷×÷³ö¸üºÃµÄÓÅ»¯¾ö¶¨£¬ÒòΪÈç¹û±àÒëÆ÷ÖªµÀ×ֶεÄÖµ²»»á¸ü¸Ä£¬ÄÇôËüÄܰ²È«µØÔڼĴæÆ÷ÖиßËÙ»º´æ¸ÃÖµ¡£final ×ֶλ¹Í¨¹ýÈñàÒëÆ÷Ç¿ÖÆ¸Ã×Ö¶ÎΪֻ¶ÁÀ´Ìṩ¶îÍâµÄ°²È«¼¶±ð¡£
1.1¹ØÓÚfinal³ÉÔ±¸³Öµ
1£©ÔÚjavaÖУ¬ÆÕͨ±äÁ¿¿ÉĬÈϳõʼ»¯¡£µ«ÊÇfinalÀàÐ͵ıäÁ¿±ØÐëÏÔʽµØ³õʼ»¯¡£
2£©final ³ÉÔ±ÄÜÇÒÖ»Äܱ»³õʼ»¯Ò»´Î¡£
3£©final³ÉÔ±±ØÐëÔÚÉùÃ÷ʱ£¨ÔÚfinal±äÁ¿¶¨Òåʱֱ½Ó¸øÆä¸³Öµ£©»òÕßÔÚ¹¹Ô캯ÊýÖб»³õʼ»¯£¬¶ø²»ÄÜÔÚÆäËüµÄµØ·½±»³õʼ»¯¡£
ʾÀý1 Bat.java
public class Bat {
final double PI = 3.14; // ÔÚ¶¨Òåʱ¸³Öµ
final int i; // ÒòΪҪÔÚ¹¹Ô캯ÊýÖнøÐгõʼ»¯£¬ËùÒÔ´Ë´¦±ã²»¿ÉÔÙ¸³Öµ
final List list; // ÒòΪҪÔÚ¹¹Ô캯ÊýÖнøÐгõʼ»¯£¬ËùÒÔ´Ë´¦±ã²»¿ÉÔÙ¸³Öµ
Bat() {
i = 100;
list = new LinkedList();
}
Bat(int ii, List l) {
i = ii;
list = l;
}
public static void main(String[] args) {
Bat b = new Bat();
b.list.add(new Bat());
// b.i=25;
// b.list=new ArrayList();
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
b = new Bat(23, new ArrayList());
b.list.add(new Bat());
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
}
}
½á¹û£º
I=100 List Type:class java.util.LinkedList
I=23 List Type:class java.util.ArrayList
ÔÚmain·½·¨ÖÐÓÐÁ½ÐÐÓï¾ä×¢Ê͵ôÁË£¬Èç¹ûÄãÈ¥µô×¢ÊÍ£¬³ÌÐò±ãÎÞ·¨Í¨¹ý±àÒ룬Õâ±ãÊÇ˵£¬²»ÂÛÊÇiµÄÖµ»òÊÇlistµÄÀàÐÍ£¬Ò»µ©³õʼ»¯£¬È·ÊµÎÞ·¨ÔÙ¸ü¸Ä¡£È»¶øb¿ÉÒÔͨ¹ýÖØÐ³õʼ»¯À´Ö¸¶¨iµÄÖµ»òlistµÄÀàÐÍ¡£
1.2 finalÒýÓÃ×ֶεÄÎÞЧ³õʼ»¯
ÒªÕýȷʹÓÃfinal×Ö¶ÎÓеãÂé·³£¬¶ÔÓÚÆä¹¹Ôì×ÓÄÜÅ׳öÒì³£µÄ¶ÔÏóÒýÓÃÀ´ËµÓÈÆäÈç´Ë¡£ÒòΪ final ×Ö¶ÎÔÚÿ¸ö¹¹ÔìÆ÷ÖбØÐëÖ»³õʼ»¯Ò»´Î£¬Èç¹û final ¶ÔÏóÒýÓõĹ¹ÔìÆ÷¿ÉÄÜÅ׳öÒì³££¬±àÒëÆ÷¿ÉÄܻᱨ´í£¬Ëµ¸Ã×Ö¶ÎûÓб»³õʼ»¯¡£±àÒëÆ÷Ò»°ã±È½ÏÖÇÄÜ»¯£¬×ãÒÔ·¢ÏÖÔÚÁ½¸ö»¥³â´úÂë·ÖÖ§£¨±ÈÈ磬if...else ¿é£©µÄÿ¸ö·ÖÖ§Öеijõʼ»¯Ç¡ºÃÖ»½øÐÐÁËÒ»´Î£¬µ«ÊÇËü¶Ô try...catch ¿éͨ³£²»»áÈç´Ë“¿íÈÝ”¡£
ÏÂÃæÕâ¶Î
Ïà¹ØÎĵµ£º
package Demo;
// ÊÜÏÞ·ºÐÍ
class Info17<T> {
private T var; // ¶¨Òå·ºÐͱäÁ¿
public void setVar(T var) {
this.var = var;
}
public T getVar() {
return this.var;
}
public String toString() { // Ö±½Ó´òÓ¡
return this.var.toString();
}
}
public class GenericsDemo17 {
publ ......
ͨ¹ýJava·´Éäµ÷Ó÷½·¨
ÕâÊǸö²âÊÔÓõÄÀý×Ó£¬Í¨¹ý·´Éäµ÷ÓöÔÏóµÄ·½·¨¡£
TestRef.java
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
/**
* Created by IntelliJ IDEA.
* File: TestRef.java
* User: leizhimin
* Date: 2008-1-28 14:48:44 ......
package Demo;
// ͨ¹ý·ºÐÍ·½·¨·µ»Ø·ºÐÍÀàÐÍ
class Info27<T extends Number> { // Ö¸¶¨ÉÏÏÞ£¬Ö»ÄÜÊÇÊý×ÖÀàÐÍ
private T var; // ´ËÀàÐÍÓÉÍⲿ¾ö¶¨
public T getVar() {
return this.var;
}
public void setVar(T var) {
this.var = var;
}
public String toString() { // ¸²Ð´ObjectÀàÖеÄtoStr ......
package Demo;
// Java·ºÐͽӿÚ
interface Info24<T> { // ÔÚ½Ó¿ÚÉ϶¨Òå·ºÐÍ
public T getVar(); // ¶¨Òå³éÏó·½·¨£¬³éÏó·½·¨µÄ·µ»ØÖµ¾ÍÊÇ·ºÐÍÀàÐÍ
}
class InfoImp24<T> implements Info24<T> { // ¶¨Òå·ºÐͽӿڵÄ×ÓÀà
private T var; // ¶¨ÒåÊôÐÔ
public InfoImp24(T var) { // ͨ¹ý¹¹Ôì·½·¨É ......
ÀàÐÍת»» Îı¾¿òStringתΪdouble Double·â×°Àà
Òì³£´¦Àí
ÏÔʾ¸ñʽ
ÕûÊý½á¹ûĩβȥ.0
Ê×λ²»ÄÜΪ0
+/- ÎÊÌâ Êý´óÓÐbug
Á¬¼ÓÁ¬¼õÎÊÌâ
»ØÍË
³ý0±¨´í
²»ÄܳöÏÖ¶à¸öµã °´ÁËÒ»¸öµãÔÙ°´Ã»ÓÐ
×Ö·û´®ÊDz ......