锘??xml version="1.0" encoding="utf-8" standalone="yes"?> public class DeprecatedExample {
@Quality("Security")
@Quality("Performance")
@Quality("Readability")
public void foo(){
//
}
}
Java 8寮曞叆浜哛epeatable娉ㄨВ錛園Repeatable錛夊彲浠ヨВ鍐寵繖涓闂錛屼絾鍏夋湁鍙噸澶嶇殑娉ㄨВ瀹氫箟榪樹笉澶燂紝榪橀渶瑕佸畠鐨勫鍣ㄦ敞瑙o紝涓よ呬竴璧鋒潵瀹炵幇鍙噸澶嶆敞瑙g殑浣跨敤銆傚疄渚嬪涓嬶細
@Retention(RetentionPolicy.SOURCE)
@Repeatable (Qualities.class)
public @interface Quality {
String value();
}
public @interface Qualities {
Quality[] value();
}
鍏朵腑錛孮uality鏄彲閲嶅娉ㄨВ錛岀敱@Repeatable娉ㄨВ鏍囨槑錛屽畠鐨勫鍣ㄦ敞瑙f槸Qualities錛岀敤浜庡瓨鏀炬墍鏈夊彲閲嶅鐨凲uality錛堝瓨璐湪Quality[]涓級錛涘悓鏃惰繕瑕佹敞鎰忓彲閲嶅娉ㄨВ鍜屽畠鐨勫鍣ㄦ敞瑙g殑鐩爣鍏冪礌蹇呴』鏄竴鏍風殑錛堣繖涔熶笉璦鑷槑錛夈傚姝よ繖鑸紝鎴戜滑鏈寮濮嬬殑 SampleClass 鍦↗ava 8鐜涓嬪氨鍙互瀹夊叏浣跨敤浜嗐?br />
]]>
private Singleton(){}
public static Singleton getInstance(){
return Helper.instance;
}
static class Helper {
private static Singleton instance = new Singleton();
}
}
]]>
鍦‵ile綾諱腑澧炲姞浜嗕互涓嬫柟娉曪細
public long getFreeSpace(): 榪斿洖涓涓垎鍖哄墿浣欑┖闂?BR>public long getTotalSpace(): 榪斿洖涓涓垎鍖烘葷┖闂?BR>public long getUsableSpace(): 榪斿洖涓涓垎鍖哄凡鐢ㄧ┖闂?BR>娉ㄦ剰錛屼互涓奆ile鎸囦唬鐨勮櫄鎷熻礬寰勫繀欏繪槸鐩樼錛屽惁鍒欒繑鍥?銆?BR>
2. Splash Screen
Mustang瀵逛簬Splash Screen鐨勫疄鐜版槸涓涓敤鏉ユ樉紺篻if錛堝彲浠ユ槸鍔ㄧ敾寮忕殑錛?PNG, jpg鍥劇墖鐨勬病鏈変慨楗扮殑紿楀彛
浣跨敤鏂瑰紡錛?BR>鍦╦ava鍛戒護琛屼腑鍔犲叆 -splash 閫夐」,紺轟緥濡備笅錛?BR>java -splash mypic.jpg HelloWorld
濡傛灉浣犵殑綾繪槸浠ar鐨勬柟寮忔潵榪愯錛岄偅涔堝彲浠ュ湪jar鏂囦歡鐨凪ANIFEST.MF鏂囦歡涓姞鍏ュ涓嬬殑涓琛岋細
SplashScreen-Image:mypic.jpg
浣犱篃鍙互鍦ㄥ懡浠よ涓啓錛?BR>java -splash:mypic.jpg -jar helloWorld.jar
榪欓噷鐢ㄧ殑鍥劇墖灝嗘浛浠ANIFESET.MF涓畾涔夌殑鍥劇墖錛堝鏋滄湁鐨勮瘽錛?BR>
涓轟簡瀹炵幇鑷畾涔夌殑Splash Screen鐣岄潰錛屼綘鍙互浣跨敤濡備笅鐨勬柟娉曪細
//浣跨敤SplashScreen鐨勯潤鎬佹柟娉曡幏寰桽plashScreen瀵硅薄錛岀劧鍚庤嚜瀹氫箟
SplashScreen ss = SplashScreen.getSplashScreen ();
if (ss != null)
{
// 鑷畾涔変唬鐮併?BR>}
鍦⊿palshScreen涓繕鎻愪緵浜嗗涓嬫柟娉曪紝鍏蜂綋浣跨敤璇風湅JDK鎴栬闂畇un緗戠珯
public Graphics getGraphics()
public URL getImageURL()
public Dimension getSize()
public void setImageURL(URL imageURL):
public void update()
鍊煎緱娉ㄦ剰鐨勬槸錛氫綘蹇呴』浣跨敤 -spalsh閫夐」鎴朚ANIFEST.MF鐨勬柟寮忔潵璋冪敤SplashScreen錛?BR>鍚﹀垯淇敼鏄棤鏁堢殑銆?img src ="http://m.tkk7.com/robin/aggbug/27569.html" width = "1" height = "1" />
]]>
1. 緙栧啓鑷畾涔堾Todo娉ㄨВ
緇忓父鎴戜滑鍦ㄥ啓紼嬪簭鏃訛紝鏈夋椂鍊欐湁浜涘姛鑳藉湪褰撳墠鐨勭増鏈腑騫朵笉鎻愪緵錛屾垨鐢變簬鏌愪簺鍏跺畠鍘熷洜錛屾湁浜涙柟娉曟病鏈夊畬鎴愶紝鑰岀暀寰呬互鍚庡畬鎴愶紝鎴戜滑鍦╦avadoc涓敤@TODO鏉ユ弿榪拌繖涓琛屼負錛屼笅闈㈢敤java娉ㄨВ鏉ュ疄鐜般?BR>
public @interface Todo { } // Todo.java
濡傛灉浣犳兂璁╄繖涓敞瑙g被鍨嬭兘澶熻嚜鐪佺殑璇濓紝緇欏畠鍔犱笂@Todo娉ㄨВ錛屽啓娉曞涓嬶細
@Todo
public @interface Todo{ }
涓嬮潰鎴戜滑緇欒繖涓敞瑙f帴鍙楀弬鏁扮殑鑳藉姏錛屼唬鐮佸涓嬶細
@Todo("Just articleware")
public @interface Todo{
public enum Priority { LOW, MEDIUM, HIGH }
String value();
String[] owners() default "";
Priority priority() default Priority.MEDIUM;
}
娉ㄦ剰錛?/B>娉ㄨВ綾繪ф墍鑳芥帴鍙楃殑鍙傛暟綾誨瀷鏈夌潃涓ユ牸鐨勮鍒欙細
a. 鍙傛暟綾誨瀷鍙兘鏄細primitive, String, Class, enum, annotation, 鎴栬呮槸鏁扮粍錛?BR>b. 鍙傛暟鍊間笉鑳戒負絀猴紝鍥犳姣忎竴涓弬鏁板奸兘瑕佸畾涔変竴涓己鐪佸鹼紱
c. 鍚嶅瓧涓簐alue鐨勫弬鏁板彲浠ョ敤綆渚跨殑鏂規硶鏉ヨ緗紱
d. 鍙傛暟鐨勫啓娉曞鍚屽啓綆鍗曟柟娉曪紙鐪嬪涓婁唬鐮侊級錛屼笉鍏佽鍔犲叆鍙傛暟錛屼笉鍏佽鏈塼hrows瀛愬彞絳夈?BR>
鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戜滑涓篅Todo瀹氫箟浜?涓弬鏁? 鍒嗗埆鏄痸alue, owners, priority. 娉ㄦ剰錛氱敱浜巚alue鐨勭壒孌婃э紝瀹冪殑鐨勫嵈鐪佸煎彲浠ョ敱涓婇潰浠g爜涓殑"Just articleware"鏉ュ畾涔夛紝褰撶劧浣犱篃鍙互鍗曠嫭鍐欎竴涓己鐪佸箋?BR>
涓嬮潰鐪嬩竴涓簲鐢ˊTodo娉ㄨВ鐨勪緥瀛愶細
@Todo(
value="Class scope",
priority=Unfinished.Priority.LOW
)
public class TodoDemo {
@Todo("Constructor scope")//閫氳繃蹇嵎鏂瑰紡錛岃緗畍alue鐨勫?
public TodoDemo() { }
@Todo(owner="Jason", value="Method scope")
public void foo() { }
}
涓婇潰鐨勪唬鐮佸緢綆鍗曪紝涓嶅浠嬬粛銆?BR>
涓嬮潰鎴戜滑鎯寵@Todo涓嶈兘搴旂敤鍦╢ields, parameters, 鎴栬卨ocal variables錛堝洜涓鴻繖瀵規垜浠潵璇存病鏈夋剰涔夛級錛涘畠搴斿綋鍙互鍑虹幇鍦╦avadoc涓紱鍦ㄨ繍琛屾槸鍏鋒湁鎸佷箙鎬с傝瀹炵幇榪欎簺鐗規э紝灝遍渶瑕乤nnotation鍖呯殑鏀寔鍟︺?
2. 搴旂敤annotation鍖呯殑鏀寔
1錛堾Documented
綾誨拰鏂規硶鐨刟nnotation緙虹渷鎯呭喌涓嬫槸涓嶅嚭鐜板湪javadoc涓殑錛屼負浜嗗姞鍏ヨ繖涓ц川鎴戜滑鐢ˊDocumented
搴旂敤浠g爜濡備笅(綆鍗曪紝涓嶅浠嬬粛錛夛細
package com.robin;
import java.lang.annotation.*;
@Todo("Just articleware")
@Documented
public @interface Todo{ ...
2錛堾Retention
鐢ㄦ潵琛ㄦ槑浣犵殑annotation鐨勬湁鏁堟湡錛屽彲浠ユ湁涓夌閫夋嫨(濡傚浘鎵紺?錛?BR>
浠ヤ笅紺轟緥浠g爜搴旂敤RUNTIME絳栫暐
package com.robin;
import java.lang.annotation.*;
@Todo("Just articleware")
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Todo{ ...
3) @Target
@Target娉ㄨВ琛ㄦ槑鏌愪釜娉ㄨВ搴旂敤鍦ㄥ摢浜涚洰鏍囦笂錛屽彲閫夋嫨濡備笅鑼冨洿:
鎸夋垜浠殑鍔熻兘瑕佹眰錛屼唬鐮佸涓嬶細
package com.robin;
import java.lang.annotation.*;
@Todo("Just articleware")
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD,
ElementType.CONSTRUCTOR,ElementType.ANNOTATION_TYPE,
ElementType.PACKAGE})
public @interface Todo{ ...
4) @Inherited
@Inherited琛ㄦ槑鏄惁涓涓嬌鐢ㄦ煇涓猘nnotation鐨勭埗綾誨彲浠ヨ姝nnotation搴旂敤浜庡瓙綾匯?BR>紺轟緥浠g爜濡備笅錛?BR>
package com.robin;
import java.lang.annotation.*;
@Todo("Just articleware")
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD,
ElementType.CONSTRUCTOR,ElementType.ANNOTATION_TYPE,
ElementType.PACKAGE})
@Inherited
public @interface Todo{
public enum Priority { LOW, MEDIUM, HIGH }
String value();
String[] owners() default "";
Priority priority() default Priority.MEDIUM;
}
]]>
1. @Override
@Override鐢ㄥ湪澶氭佹儏鍐典笅錛屾瘮濡傦細
public abstract class Animal{
public void say(){
System.out.println("annimal is saying");
}
}
public class Cat extends Animal{
@Override
public void say(){
System.out.println("miao, miao");
}
}
閫氳繃@Override鏉ュ憡璇塲ava緙栬瘧鍣紝say鏂規硶鏄噸杞界殑鐖剁被鐨勬柟娉曪紝榪欐牱錛屽綋鐖剁被鐨剆ay鏂規硶絳懼悕鏀瑰悕鐨勮瘽錛屾瘮濡傚鍔犱簡涓浜涘弬鏁幫紝閭d箞瀛愮被鐨凜at涓殑say鏂規硶緙栬瘧鏃跺氨浼氭姤閿欙紝璇存病鏈夋紜殑閲嶈澆鐖剁被鏂規硶錛屾墍浠ワ紝@Override鍙互甯垜浠獙璇佺▼搴忕殑姝g‘鎬э紝榪欎竴鐐癸紝寰堟湁鐢ㄣ?BR>
2. @Deprecated
@Deprecated鐨勬剰鎬濆拰JavaDoc涓殑@deprecated娉ㄩ噴鍦ㄦ湰璐ㄤ笂鏄竴鏍風殑錛屼嬌鐢ㄥ涓嬶細
@Deprecated
public static void badMethod() { }
}
public class DeprecatedUser {
public static void main(String[] args){
DeprecatedExample.badMethod();
}
}
涓婇潰鐨勪唬鐮佸鏋滅敤javac榪涜緙栬瘧鐨勮瘽錛屼細鎵撳嵃鍑哄涓嬩俊鎭?
Note: DeprecatedUser.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
濡傛灉浣犳寜鎻愮ず閲嶆柊鍔?Xlint榪涜緙栬瘧錛屼綘灝卞彲浠ュ緱鍒伴敊璇殑璇︾粏淇℃伅錛?BR>% javac -Xlint:deprecation
DeprecatedUser.java:3: warning: [deprecation] badMethod() in DeprecatedExample
has been deprecated
DeprecatedExample.badMethod();
闇瑕佹敞鎰忕殑鏄細鍜宩avadoc涓殑@deprecated鐩告瘮錛孈Deprecated騫舵病鏈夊己澶у灝戯紝鍥犱負瀹冧笉鏀寔鍙傛暟錛岃孈deprecated鍚庨潰榪樺彲浠ヨ窡瀛楃涓叉潵緇欎竴浜涚浉鍏崇殑淇℃伅錛屼絾@Deprecated鍋氫笉鍒幫紝浣嗗畠鎻愪緵浜嗚繍琛屾椂鑷渷鐨勫姛鑳斤紝鏉ユ彁紺洪敊璇紝鎵浠ュ緩璁瓳Deprecated鍜孈deprecated鍚屾椂浣跨敤銆?/FONT>
3. @SuppressWarnings
欏懼悕鎬濅箟錛屽氨鏄姂鍒惰鍛婁俊鎭殑鍑虹幇錛屼嬌鐢ㄥ涓嬶細public class DeprecatedExample2{
@Deprecated
public static void foo() { }
}
public class DeprecatedUser2 {
@SuppressWarnings(value={"deprecation"})
public static void main(String[] args) {
DeprecatedExample2.foo();
}
}
涓婅堪@SuppressWarnings(value={"deprecation"})鐨勪綔鐢ㄥ氨鏄姂鍒剁紪璇戝櫒鎶eprecation鐨勯敊銆?BR>@SuppressWarnings(value={"deprecation"})鍙敮鎸佷竴涓弬鏁幫紝鏄暟緇勭被鍨嬶紝鎵浠ヤ綘鍙互涓嶇敤鍔爒alue, 鍐欐垚錛欯SuppressWarnings({"deprecation"})錛涘綋鎯蟲姂鍒跺涓被鍨嬬殑璀﹀憡淇℃伅鏃訛紝鍙啓錛欯SuppressWarnings({"unchecked","fallthrough",deprecation"}).
娉ㄦ剰錛氬湪JDK1.5.0 release涓紝@SuppressWarnings榪樻病鏈夊緱鍒板畬鍏ㄦ敮鎸侊紝浼氬湪浠ュ悗鏀寔錛屼絾Sun騫舵病鏈夌粰鍑哄叿浣撶殑鏃墮棿銆?/FONT>