可以說,C類和d擴展延伸的A類泛型方法和繼承Java中
我在E類一個方法,我希望能夠爲使用對象C或對象d B類。我知道A類提供了我需要的所有方法。我該如何去編寫一個方法,讓我傳遞一個對象C或對象D作爲參數?
我在想我需要做一個泛型類嗎?如果是的話,是否有人有更接近於我所需要的this的具體例子,這似乎只告訴我如何使用現有的集合類?
可以說,C類和d擴展延伸的A類泛型方法和繼承Java中
我在E類一個方法,我希望能夠爲使用對象C或對象d B類。我知道A類提供了我需要的所有方法。我該如何去編寫一個方法,讓我傳遞一個對象C或對象D作爲參數?
我在想我需要做一個泛型類嗎?如果是的話,是否有人有更接近於我所需要的this的具體例子,這似乎只告訴我如何使用現有的集合類?
class A {
public String hello(){return "hello";}
}
class B extends A{}
class C extends B{}
class D extends B{}
方法hello
在所有子類B,C和D
可用所以在E,這樣做:
private void test() {
System.out.println(hello(new A()));
System.out.println(hello(new B()));
System.out.println(hello(new C()));
System.out.println(hello(new D()));
}
public String hello(A a) {
return a.hello();
}
,你可以通過A,B的情況下, C或D
順便說一句 - 這種情況下沒有必要使用泛型(據我所知)
如果C
和D
有A
作爲他們的共同ancestror和A
提供了所有需要的方法,那麼你的方法應該簡單地採取的A
實例作爲參數。除非我誤解了你的問題,否則你不需要通用的方法。
public void doSomething(A input) {
input.methodInA();
input.secondMethodInA();
...
}
多態性將運行在C或d的可能重寫代碼來實現,你不需要做的比調用該方法的任何其他。
class A {
}
class B extends A {
}
class C extends B {
}
class D extends B {
}
class E {
public void test (A a) {
// c or d will work fine here
}
}
哦,那實際上我已經設置好了,很酷。我不在我可以測試代碼的階段,所以只是想檢查一下。謝謝 – tgrosinger 2011-04-20 15:28:25