gpt4 book ai didi

java - 从父类(super class)返回扩展类的新实例

转载 作者:行者123 更新时间:2023-11-30 03:46:49 24 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,该应用程序具有多个扩展“模型”类的类。

这是我现在的代码:

public class Model {

protected int mId;

public int getId() { return mId; }

public Model(JSONObject json) {
try {
mId = json.getInt("id");
} catch (JSONException e) {
e.printStackTrace();
}
}

public Class<? extends Model> getBy(String property, String value) {
// should return new instance of extending class
return null;
}

}

public class Song extends Model {

protected String mName;
protected String mArtist;
protected int mDuration;

public String getName() { return mName; }
public String getArtist() { return mArtist; }
public int getDuration() { return mDuration; }

public Song(JSONObject json) {
super(json);

try {
mName = json.getString("name");
mArtist = json.getString("artist");
mDuration = json.getInt("duration");
} catch (JSONException e) {
e.printStackTrace();
}
}

}

我试图在 Model 类中创建一个方法来返回扩展它的类的新实例。

想法是多个类可以扩展模型类,即艺术家、专辑。这些类应该有一个“getBy”方法,它返回的实例不是模型类的实例,而是艺术家、专辑等类的实例。

最佳答案

给你:

public <T extends Model> T getBy(Class<T> clazz, JSONObject json) throws Exception
{
return clazz.getDeclaredConstructor(json.getClass()).newInstance(json);
}

然后像这样使用它:

Model model = ...;
Song song = model.getBy(Song.class, someJson);

关于java - 从父类(super class)返回扩展类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865905/

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