2017-07-24 53 views
0

確切地說,我很好奇Object []數組是否能夠存儲和訪問其他對象的方法。這是我想要實現的一個小例子。你可以設置一個多對象數組並從中調用一個方法嗎?

//declare an array of *different* objects 
private static Object[] function = {new Object1(), 
            new Object2()}; 
//calls method(getNumber) from Object1() 
function[0].getNumber(); 

因爲我已經發現,可以疊加相同的對象到一個數組,我想弄清楚如果有可能不使用ArrayList的不同的方法來做到這一點。只是好奇,所以如果你認爲沒有辦法做到這一點只是告訴我,謝謝:)

+0

它可能更容易只是直接從對象調用它,而單獨聲明它們,對不對? –

+0

你可以通過強制轉換來實現:'(Object1)function [0] .myObjectMethod();' – Ricardo

+0

爲什麼投射是有效的?是否因爲數組本身只聲明爲Object []類型的數組? Sry回合這些qns,我的合法性剛剛開始編寫不到半年前:P –

回答

2

我不知道你在問什麼,但你應該在調用普通對象的方法之前施放。 取而代之的是:

function[0].getNumber(); 

你應該做這樣的事情:

((MyType) function[0]).getNumber(); 
+0

不知道鑄造可以像這樣使用,謝謝 –

+0

此外,請看看泛型:) https://stackoverflow.com/ a/2501513/2928710 –

+0

如果答案沒有幫助,請不要猶豫,ping :) –

0

如果你想調用的方法是所有的對象都相同,你控制自己的班級,你應該提取方法到接口,並讓類實現它。

這樣你可以有一個CommonInterface[]陣列...

public CommonInterface { Number getNumber(); } 

CommonInterface[] function = { new Object1(), new Object2() }; 
function[1].getNumber() 
相關問題