我正在用Java創建一個基類/父類,它將有幾個方法來創建類本身,我想知道是否有任何方法讓父類返回實例的子類,而不是返回父類的實例,然後必須投給孩子?創建一個返回子類對象的父類
例如,這裏是我的父類:
public abstract class SFObject
{
// Variables
protected String mID;
protected String mName;
// Function called to create ourselves from a DiffObject
public abstract SFObject CreateFromDiffObject(DiffObject object);
// Function called to create a list of ourselves from a query
public List<SFObject> CreateListFromQuery(Connection connection, String query)
{
// Run the query and loop through the results
ArrayList<SFObject> objects = new ArrayList<SFObject>();
for (DiffObject object : connection.Query(query))
objects.add(CreateFromDiffObject(object));
return objects;
}
}
如果我創建基於我SFObject類的子類,在我的子類仍然會返回一個SFObject(需要被轉換爲兩種功能我的子類類型)或SFObjects列表(需要單獨轉換爲我的子類類型)。有什麼辦法(可能使用反射)讓我的子類返回自身的實例,而不是SFObjects?
也許你正在尋找創建一個工廠或抽象工廠,而不是在這裏。 – 2013-04-26 20:50:21