Posted on 2011-08-12 15:09
itspy 閱讀(478)
評論(0) 編輯 收藏
class Student {
public String email="lilao#163.com";
//下面這個代碼符合語法嗎?這段代碼有實際用處嗎?
{System.out.println("Hello, I'm in Student: "+getClass());}
}
public class Test {
public static void main(String[] args){
new Student(){
//下面這兩行代碼在語法上面到底是什么一個說法,很不理解.
{System.out.println("hello, I'm in test: "+getClass());}
{System.out.println("hello, I'm in test, my name is:"+super.email );}
};
}
}
也許很多人認為這個只是奇淫巧計,沒什么實際用處. 實際上不是的,這和匿名類很類似,通常我們直接通過這種方式,實現一個借口或者抽象類里面的一個方法,通過這樣寫代碼可以很簡單.
但是這個里面不同,它不是實現什么接口,或者方法.而是直接插入了一個代碼塊,并且直接執行,有點像靜態方法塊,其實這個就是非靜態代碼塊.從這個鏈接里面,你可以看到更多. 在這只是再new對象時添加一個代碼塊,如果只是一次性使用,就很靈活.所以在測試的時候,就經常使用. (http://www.cnblogs.com/rgky/archive/2011/03/17/1986907.html)
在Jmock里面就經常有這種寫法.比如你可以在下面的鏈接中找到很多類似的寫法.
http://fly-hyp.iteye.com/blog/203094
- context.checking(new Expectations(){
- {
-
- atLeast(1).of(dao).find(id1);
- will(onConsecutiveCalls(
- returnValue(user1),
- returnValue(user2)));
- }
- });