class Student {
public String email="lilao#163.com";
//下面這個(gè)代碼符合語(yǔ)法嗎?這段代碼有實(shí)際用處嗎?
{System.out.println("Hello, I'm in Student: "+getClass());}
}
public class Test {
public static void main(String[] args){
new Student(){
//下面這兩行代碼在語(yǔ)法上面到底是什么一個(gè)說(shuō)法,很不理解.
{System.out.println("hello, I'm in test: "+getClass());}
{System.out.println("hello, I'm in test, my name is:"+super.email );}
};
}
}
也許很多人認(rèn)為這個(gè)只是奇淫巧計(jì),沒(méi)什么實(shí)際用處. 實(shí)際上不是的,這和匿名類很類似,通常我們直接通過(guò)這種方式,實(shí)現(xiàn)一個(gè)借口或者抽象類里面的一個(gè)方法,通過(guò)這樣寫代碼可以很簡(jiǎn)單.
但是這個(gè)里面不同,它不是實(shí)現(xiàn)什么接口,或者方法.而是直接插入了一個(gè)代碼塊,并且直接執(zhí)行,有點(diǎn)像靜態(tài)方法塊,其實(shí)這個(gè)就是非靜態(tài)代碼塊.從這個(gè)鏈接里面,你可以看到更多. 在這只是再new對(duì)象時(shí)添加一個(gè)代碼塊,如果只是一次性使用,就很靈活.所以在測(cè)試的時(shí)候,就經(jīng)常使用. (http://www.cnblogs.com/rgky/archive/2011/03/17/1986907.html)
在Jmock里面就經(jīng)常有這種寫法.比如你可以在下面的鏈接中找到很多類似的寫法.
http://fly-hyp.iteye.com/blog/203094
- context.checking(new Expectations(){
- {
- //另一種連續(xù)調(diào)用: 同個(gè)方法同樣參數(shù),調(diào)用多次返回值各不同,聲明了調(diào)用次序
- atLeast(1).of(dao).find(id1);
- will(onConsecutiveCalls(
- returnValue(user1),
- returnValue(user2)));
- }
- });