java如何切换一个类或改进它
public <T> T getData(final Class<T> cast, final String query)
{
final Optional<JSONObject> optional = Optional.ofNullable(new JSONObject(getHTTP(query))).filter(s -> s.has("data") && s.getJSONArray("data").length() > 0 && s.getJSONArray("data").get(0) instanceof JSONObject);
if (optional.isPresent())
{
final JSONObject json = JSONObject.class.cast(optional.get().getJSONArray("data").get(0));
return switch (cast.getSimpleName())
{
case Profile.class -> new Profile(<parameters>);
case UserVideo.class -> new UserVideo(<parameters>);
default -> null;
};
}
return null;
}
我想改进这段代码并像这样调用它
final Profile profile = getData(Profile.class, String.format(URL, "data"))
问题是我不能切换类,我不想使用字符串(因为我想增强我的知识,让它比简单更复杂)
是否有其他方法可以切换一个类并使用不同的参数解析(甚至反射类)并返回它。 考虑此方法可以返回不同类型的类,并且只给出链接和请求的数据。
# 1 楼答案
不幸的是,java中的开关功能不如其他语言强大。我认为唯一的方法是通过if elseif chain
如果你允许我重新设计API,我更喜欢:
编辑:
等等,我有个新主意
这相当于我之前的答案,但看起来更像你的代码
编辑2:
如果您不喜欢Profile::fromJSON,还可以使用静态常量