有沒有在Java中的方式來寫這將需要一個未知的對象作爲參數的方法?對象將始終有一個方法需要調用的通用方法。這裏是一個例子:Java方法這需要未知參數
public void aMethod (MultipleObjects object){
object.commonMethod();
// Do some stuff here
}
我不確定這是叫什麼(如果存在),所以很難在Google上搜索。
有沒有在Java中的方式來寫這將需要一個未知的對象作爲參數的方法?對象將始終有一個方法需要調用的通用方法。這裏是一個例子:Java方法這需要未知參數
public void aMethod (MultipleObjects object){
object.commonMethod();
// Do some stuff here
}
我不確定這是叫什麼(如果存在),所以很難在Google上搜索。
你需要一個interface:
interface MyInterface {
void commonMethod();
}
class MyClass implements MyInterface {
// implement `commonMethod()`
}
現在你的方法是:
public void aMethod(MyInterface object) {
...
object.commonMethod();
...
}
您現在還可以傳遞MyClass
實例(或實現MyInterface
任何其他類)aMethod()
。
可以使所有這些類(共享公用方法),以實現一個接口,讓你這樣定義的方法:
public void aMethod(SomeInterface obj) {
obj.commonMethod();
// ...
}
的接口將是:
public interface SomeInterface {
public void commonMethod();
}
通常方法是定義一個只包含該方法的接口,然後確保所有可能傳遞給方法的類實現該接口。例如: -
interface CommonMethodHaver {
void commonMethod();
}
class Class1 implements CommonMethodHaver {
yadda yadda yadda;
void commonMethod() {
do class1-specific stuff here;
}
}
...
public void aMethod(CommonMethodHaver cmh) {
cmh.commonMethod();
// Do some stuff here
}
我明白很多人都解釋你的問題意味着你想了解的接口,但我解釋這個「寫這將需要一個未知的對象作爲參數的方法?」意味着如何編寫一個方法來處理未知對象。正如其他答案已經告訴你,除非他們共享一個共同的接口,你不能讓他們都調用相同的方法。但如果你問這個(這是我認爲你的問題是要求),這是你會怎麼處理自定義不同的未知參數...
public void aMethod(Object... object) {
if(object==null)
{
//whatever you want to do if no parameters are entered.
return;
}
for (Object o : object) {
if (o == null) {
continue; //what to do if null entered
}
if (o instanceof Integer) {
//whatever you want to do if it is an Integer
}
else if(o instanceof Double)
{
//whatever you want to do if it is a Double
}
else if(o instanceof Character)
{
//whatever you want to do if it is a Character
}
//and so on
}
}
'Object ...'是一個Object對象的數組。你爲什麼要把它轉換成「int」? – Christian
@Christian對象...也可以不採取任何措施。我將它轉換爲int來演示如何將它作爲另一種類型處理。我將重新編輯它來解釋更多。 – CodeCamper
它對問題有用嗎?只是問問。 – Christian
如果你真的不知道什麼對象將被傳入並且這些對象不通過任何類型的公共基類或接口相關聯,那麼您將需要將該對象作爲Object
引用傳入,並使用反射來查找該對象是否實現了要調用的方法。如果是這樣,那麼你再次使用反射來調用它。
你正在傳遞以任何方式相關的物體,如一個共同的基類或接口? – Jason
你問的是如何製作一個採用多個未知對象的方法,或者你問如何在由你控制的不同類之間共享方法?或者你在問一些不可能的事情? – CodeCamper