推文的時間太久了....
直接回
你把那一段改成這樣就好了
class Cat{
public void miew(){
//do something
}
}
Cat cat=new Cat();
for(;;){
cat.miew();
}
※ 引述《GALINE (天真可愛CQD)》之銘言:
: 如果我今天有個 anonymous class,我可以在宣告時直接呼叫他
: 的 method。像是:
: new Object (){
: public void miew(){
: Object cat //do something
: }
: }.miew();
: 這樣的 code 是 OK 的。
: 可是如果我想在迴圈裡面使用這個 method 似乎就沒辦法
: Object cat = new Object (){
: public void miew(){
: //do something
: }
: };
: for(;;){
: cat.miew(); //這行會死掉
: }
沒有迴圈一樣會掛掉,這跟迴圈一點關係也沒有。
另外,
new Object (){
public void miew(){
//do something
}
};
這段的方法的意思是,你複寫一個Object,並加上miew方法
在指定給Object之前....
也就是
Object cat = ......
之前,他被視為一個,繼承自Object卻不是Object的物件
所以後面接.miew();可以叫用.miew();方法
但是在指派給Object cat之後,那個物件實體就被當成Object
又由於Object底下沒有miew()方法,所以編譯的時候就會回報錯誤
: 我有點好奇,有可能不透過 reflection 的方式,在迴圈裡面呼叫到
: 這個 anonymous class 的 miew() 嗎?
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65