我想問你,單個方法如何在java中返回不同類型的對象?如何從java中的方法返回不同類型的對象?
可以說我們有一個類「a」。類a是類「b」和「c」的父類。 ,假設我們已經定義爲數組列表:
java.util.ArrayList<a> list;
因此該列表可以包含一個類,B類和C類的對象。 可以說我們創建了一個類b的對象和一個類c的一個對象,我們將它們添加到列表中。
現在,我想創建這樣的方法:
public ? get_element(boolean first)
{
if (first)
{
return list.get(0);
}
else
{
return list.get(1);
}
}
我的問題是,我不知道的地方放了什麼「?」在這個方法中。 如果我把「a」,所以,「公開一個get_element」,當元素被返回時,它總是類型「a」,無論元素最初是何時添加類型「b」或「c」。
但我希望返回的元素是添加元素的類型。所以,如果我在列表的索引0處添加類型「b」的元素,並且在索引1處添加類型「c」的元素,我希望當我調用get_element方法時,如果我提供的參數等於「false」,那返回的元素是「c」類型的,如果我在調用它時提供了true,則返回的元素是b類型的。
當然,我可以將返回的元素轉換爲我希望的類型。但這只是我寫的簡單例子,但我真的有更復雜的情況。我有大約10個類都擴展了一個類,數組列表可以包含任何這11種類型的對象,並且它們可以以任何方式排列,所以我不知道哪個類型的元素在哪個位置,除非我創建一個代碼,它會嘗試將所有類型轉換爲一個一個,直到找到可以投射的類型。
但我想知道,是否有某種更簡單的方法來做到這一點?
簡化我的問題,我寫了這個java文件:
public class test
{
public static class a{}
public static class b extends a{}
public static class c extends a{}
public static java.util.ArrayList<a> list = new java.util.ArrayList<a>(2);
static
{
b first_object = new b();
c second_object = new c();
list.add(first_object);
list.add(second_object);
b first_returned_object = get_element(true);
c second_returned_object = get_element(false);
}
public static ? get_element(boolean first)
{
if (first)
{
return list.get(0);
}
else
{
return list.get(1);
}
}
}
我的問題是,我不知道在GET元法「get_element」之前放什麼。
爲了保存「first_returned_object」中的類型b的對象和「second_returned_object」中的c類型的對象,我該如何放置?
當然,這只是一個例子,我不會使用這些類,因爲它們沒用,但我寫了這個讓我的問題儘可能簡單。
我真正的課程,我有這樣的問題有5000多行,所以我不能在這裏包括這些,所以我寫了最簡單的可能的版本,這表明我的問題。
有什麼建議嗎?
thanx。
post scriptum: to caps lock haters:你的憎恨是雙向的。 ;)
'公衆get_element(布爾第一)'程序的*接口*。 –
Java中不支持多態返回(和多態集合),沒有顯式強制轉換。如果數組列表被聲明爲包含類型「A」,則它可以包含屬於「A」子類型的元素,但不能寫出將返回實際類型的方法,只能將必須投射到「A」類型的引用寫入'如果您需要使用僅出現在「B」或「C」上的方法或公共成員,則可以使用「B」或「C」。 –
這個網站只是針對任何未來的問題,是專業人士使用的。適當時請使用shift鍵。 – 4castle