2014-02-18 28 views
0

這看起來像一個基本的面向對象的問題,但我來自Pascal/Delphi背景,並且我找不到類似的方法在Java中獲得相同的結果。如何直接訪問類型對象的方法?

在帕斯卡爾/德爾福,我可以改變這樣的事情(這是不完全正確的,但只給你一個例證):

var a: TButton; b: string; 
begin 
    a := TButton(getObject(request)); 
    b := a.caption; 
end; 

成這樣:

var b: string; 
begin 
    b := TButton(getObject(request)).caption; 
end; 

但如何在Java中實現相同的解決方案?如何改變:

Button a; 
String b; 
a = (Button) getObject(request); 
b = a.caption; 

String b; 
b = (Button) getObject(request).caption; 

或類似的東西?重點是,我想消除聲明臨時變量來保存一個對象的需要,如果我想要的只是在該對象內取另一個值(或對象)。但問題是,首先需要對對象進行類型化,因爲我所收到的只是getObject()函數中的一個普通對象。謝謝你的幫助。

+2

'B =(字符串)((按鈕)的getObject(請求).caption)' – bjhaid

+0

哦好吧..謝謝! –

+0

我會把它作爲答案,所以你可以接受它 – bjhaid

回答

0

我會做如下:

b = (String)((Button) getObject(request).caption) 
+0

@DJClayworth根據使用的上下文,您可能需要使用String Cast來防止編譯器產生噪聲,例如,當通過某個DI框架注入對象'getObject'方法時 – bjhaid