annotation。
柯橋ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
Annotation,是Java5的新特性,下面是Sun的Tutorial的描述,因?yàn)槭怯⑽模@里我翻譯下,希望能夠比較清晰的描述一下Annotation的語(yǔ)法以及思想。Annotation:Release 5.0 of the JDK introduced a metadata facility called annotations. Annotations provide data about a program that is not part of the program, such as naming the author of a piece of code or instructing the compiler to suppress specific errors. An annotation has no effect on how the code performs. Annotations use the form @annotation and may be applied to a program's declarations: its classes, fields, methods, and so on. The annotation appears first and often (by convention) on its own line, and may include optional arguments: JDK5引入了Metedata(元數(shù)據(jù))很容易的就能夠調(diào)用Annotations.Annotations提供一些本來不屬于程序的數(shù)據(jù),比如:一段代碼的作者或者告訴編譯器禁止一些特殊的錯(cuò)誤。An annotation 對(duì)代碼的執(zhí)行沒有什么影響。Annotations使用@annotation的形勢(shì)應(yīng)用于代碼:類(class),屬性(field),方法(method)等等。一個(gè)Annotation出現(xiàn)在上面提到的開始位置,而且一般只有一行,也可以包含有任意的參數(shù)。@Author("MyName")class myClass() { }
or @SuppressWarnings("unchecked")void MyMethod() { }
Defining your own annotation is an advanced technique that won't be described here, but there are three built-in annotations that every Java programmer should know: @Deprecated, @Override, and @SuppressWarnings. The following example illustrates all three annotation types, applied to methods:
定義自己的Annotation是一個(gè)比較高級(jí)的技巧,這里我們不做討論,這里我們僅僅討論每一個(gè)Java programer都應(yīng)該知道的內(nèi)置的annotations:@Deprecated, @Override, and @SuppressWarnings。下面的程序闡述了這三種annotation如何應(yīng)用于methods。import java.util.List;
class Food {}
class Hay extends Food {}
class Animal {
Food getPreferredFood() {
return null; } /** * @deprecated document why the method was deprecated */
@Deprecated
static void deprecatedMethod() { }
}
class Horse extends Animal {
Horse() {
return;
}
@Override
Hay getPreferredFood() {
return new Hay();
}
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
Animal.deprecateMethod(); //deprecation warning - suppressed }}
}
}
@DeprecatedThe @Deprecated annotation indicates that the marked method should no longer be used. The compiler generates a warning whenever a program uses a deprecated method, class, or variable. When an element is deprecated, it should be documented using the corresponding @deprecated tag, as shown in the preceding example. Notice that the tag starts with a lowercase "d" and the annotation starts with an uppercase "D". In general, you should avoid using deprecated methods — consult the documentation to see what to use instead.
@Deprecated@Deprecated annotation標(biāo)注一個(gè)method不再被使用。編譯器在一個(gè)program(程序?)使用了不贊成的方法,類,變量的時(shí)候會(huì)產(chǎn)生警告(warning)。如果一個(gè)元素(element:method, class, or variable)不贊成被使用,應(yīng)該像前面的例子里使用相應(yīng)的@deprecated 標(biāo)簽,并且注意標(biāo)簽的首字母是小寫的"d",而annotation時(shí)大寫的"D"。一般情況下,我們應(yīng)該避免使用不贊成使用的方法(deprecated methods),而應(yīng)該考慮替代的方法。
@OverrideThe @Override annotation informs the compiler that the element is meant to override an element declared in a superclass. In the preceding example, the override annotation is used to indicate that the getPreferredFood method in the Horse class overrides the same method in the Animal class. If a method marked with @Override fails to override a method in one of its superclasses, the compiler generates an error. While it's not required to use this annotation when overriding a method, it can be useful to call the fact out explicitly, especially when the method returns a subtype of the return type of the overridden method. This practice, called covariant return types, is used in the previous example: Animal.getPreferredFood returns a Food instance. Horse.getPreferredFood (Horse is a subclass of Animal) returns an instance of Hay (a subclass of Food). For more information, see Overriding and Hiding Methods.
@Override@Override annotation 告訴編譯器當(dāng)前元素是重寫(override)自父類的一個(gè)元素。在前面的例子中,override annotation用來說明Horse類中的getPreferredFood這個(gè)方法重寫(override)自Animal類中相同的方法。如果一個(gè)方法被標(biāo)注了@Override,但是其父類中沒有這個(gè)方法時(shí),編譯器將會(huì)報(bào)錯(cuò)。但是并不是說我們一定要使用這個(gè)annotation,但是它能夠很明顯的給出實(shí)際行為,尤其是在方法返回一個(gè)被重寫的方法返回類型的子類型的時(shí)候。上面的例子中,Animal.getPreferredFood 返回一個(gè) Food實(shí)例,Horse.getPreferredFood 返回一個(gè)Hay實(shí)例,這里Horse是Animal的子類,Hay是Food的子類。
@SuppressWarningsThe @SuppressWarnings annotation tells the compiler to suppress specific warnings that it would otherwise generate. In the previous example, the useDeprecatedMethod calls a deprecated method of Animal. Normally, the compiler generates a warning but, in this case, it is suppressed. Every compiler warning belongs to a category. The Java Language Specification lists two categories: "deprecation" and "unchecked". The "unchecked" warning can occur when interfacing with legacy code written before the advent of generics. To suppress more than one category of warnings, use the following syntax: @SuppressWarnings@SuppressWarnings annotation 告訴編譯器禁止別的元素產(chǎn)生的特殊的警告(warnings),在前面的例子里,useDeprecatedMethod調(diào)用了Animal的不贊成使用的一個(gè)方法。一般情況下,編譯器會(huì)給出一個(gè)警告(warning),但是在這種情況下,不會(huì)產(chǎn)生這個(gè)警告,也就是說被suppress。每個(gè)編譯器的警告都屬于一個(gè)類型。Java Language Specification列出了兩種類型:"deprecation" 和 "unchecked"。"unchecked" warning 發(fā)生在使用非generic的舊代碼交互的generic collection類時(shí)。為了禁止不止一種的警告時(shí),使用下面的語(yǔ)法:@SuppressWarnings({"unchecked", "deprecation"})
你需要導(dǎo)入util包,可以直接寫import java.util.*,這樣就不用每個(gè)util下的包都每次導(dǎo)入了
深圳遠(yuǎn)標(biāo)(ITJOB)幫你:
Java代碼規(guī)范之一 ——標(biāo)識(shí)符命名規(guī)范
轉(zhuǎn)載 2015-08-19 12:06:22
1. 標(biāo)識(shí)符命名規(guī)范
1.1 概述
標(biāo)識(shí)符的命名力求做到統(tǒng)一、達(dá)意和簡(jiǎn)潔。
1.1.1
統(tǒng)一
統(tǒng)一是指,對(duì)于同一個(gè)概念,在程序中用同一種表示方法,比如對(duì)于供應(yīng)商,既可以用supplier,也可以用provider,但是我們只能選定一個(gè)使用,至少在一個(gè)Java項(xiàng)目中保持統(tǒng)一。統(tǒng)一是作為重要的,如果對(duì)同一概念有不同的表示方法,會(huì)使代碼混亂難以理解。即使不能取得好的名稱,但是只要統(tǒng)一,閱讀起來也不會(huì)太困難,因?yàn)殚喿x者只要理解一次。
1.1.2
達(dá)意
達(dá)意是指,標(biāo)識(shí)符能準(zhǔn)確的表達(dá)出它所代表的意義,比如: newSupplier,
OrderPaymentGatewayService等;而 supplier1,
service2,idtts等則不是好的命名方式。準(zhǔn)確有兩成含義,一是正確,而是豐富。如果給一個(gè)代表供應(yīng)商的變量起名是
order,顯然沒有正確表達(dá)。同樣的,supplier1, 遠(yuǎn)沒有targetSupplier意義豐富。
1.1.3
簡(jiǎn)潔
簡(jiǎn)潔是指,在統(tǒng)一和達(dá)意的前提下,用盡量少的標(biāo)識(shí)符。如果不能達(dá)意,寧愿不要簡(jiǎn)潔。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太長(zhǎng),
transferedTargetSupplierOrderName則較好,但是transTgtSplOrdNm就不好了。省略元音的縮寫方式不要使用,我們的英語(yǔ)往往還沒有好到看得懂奇怪的縮寫。
1.1.4
駱駝法則
Java中,除了包名,靜態(tài)常量等特殊情況,大部分情況下標(biāo)識(shí)符使用駱駝法則,即單詞之間不使用特殊符號(hào)分割,而是通過首字母大寫來分割。比如:
SupplierName, addNewContract,而不是 supplier_name,
add_new_contract。
稍微深入一點(diǎn)的分析會(huì)認(rèn)為該程序應(yīng)該打印16,因?yàn)閮蓚€(gè)Unicode轉(zhuǎn)義字符每一個(gè)在源文件中都需要用6個(gè)字符來表示,但是它們只表示字符串中的一個(gè)字符。因此這個(gè)字符串應(yīng)該比它的外表看其來要短10個(gè)字符。 如果你運(yùn)行這個(gè)程序,就會(huì)發(fā)現(xiàn)事情遠(yuǎn)不是這么回事。它打印的既不是26也不是16,而是2。 理解這個(gè)謎題的關(guān)鍵是要知道:Java對(duì)在字符串字面常量中的Unicode轉(zhuǎn)義字符沒有提供任何特殊處理。編譯器在將程序解析成各種符號(hào)之前,先將Unicode轉(zhuǎn)義字符轉(zhuǎn)換成為它們所表示的字符[JLS 3.2]。因此,程序中的第一個(gè)Unicode轉(zhuǎn)義字符將作為一個(gè)單字符字符串字面常量("a")的結(jié)束引號(hào),而第二個(gè)Unicode轉(zhuǎn)義字符將作為另一個(gè)單字符字符串字面常量("b")的開始引號(hào)。程序打印的是表達(dá)式"a".length()+"b".length(),即2。
JAVA中轉(zhuǎn)義字符:
1.八進(jìn)制轉(zhuǎn)義序列:\ + 1到3位5數(shù)字;范圍'\000'~'\377'
\0:空字符
2.Unicode轉(zhuǎn)義字符:\u + 四個(gè)十六進(jìn)制數(shù)字;0~65535
\u0000:空字符
3.特殊字符:就3個(gè)
\":雙引號(hào)
\':?jiǎn)我?hào)
\\:反斜線
4.控制字符:5個(gè)
\' 單引號(hào)字符
\\ 反斜杠字符
\r 回車
\n 換行
\f 走紙換頁(yè)
\t 橫向跳格
\b 退格
點(diǎn)的轉(zhuǎn)義:. == u002E
美元符號(hào)的轉(zhuǎn)義:$ == u0024
乘方符號(hào)的轉(zhuǎn)義:^ == u005E
左大括號(hào)的轉(zhuǎn)義:{ == u007B
左方括號(hào)的轉(zhuǎn)義:[ == u005B
左圓括號(hào)的轉(zhuǎn)義:( == u0028
豎線的轉(zhuǎn)義:| == u007C
右圓括號(hào)的轉(zhuǎn)義:) == u0029
星號(hào)的轉(zhuǎn)義:* == u002A
加號(hào)的轉(zhuǎn)義:+ == u002B
問號(hào)的轉(zhuǎn)義:? == u003F
反斜杠的轉(zhuǎn)義: == u005C