gpt4 book ai didi

java - 创建返回子类对象的父类

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:17 25 4
gpt4 key购买 nike

我正在用 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(需要转换为我的子类类型)或 SFObject 列表(需要单独转换到我的 child 类(class)类型)。有什么方法(可能使用 Reflections)让我的子类返回它自己的实例而不是 SFObjects?

最佳答案

您所描述的被称为 covariant return type

Class A {
A getInstance() { ... }
}

Class B extends A {
@Override
B getInstance() { ... }
}

从 Java 1.5 开始就允许这样做。

关于java - 创建返回子类对象的父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com