gpt4 book ai didi

java - 如何计算运行时选择的类型 "object"

转载 作者:行者123 更新时间:2023-11-30 06:41:39 24 4
gpt4 key购买 nike

我需要计算一个特定的对象,但只有在运行时我才会知道哪个对象。现在我有类似的东西

public class Details {
private String typeOfObjectRequired;
private int numberOfObjectRequired;
}

在另一个类上我有

public class Container {
private List<Type1> type1List;
private List<Type2> type2List;
private Type3 type3Object;

public int countType1() {
return type1List.size();
}

public int countType2() {
return type2List.size();
}

public int countType3() {
return type3Object.getNumberOfSomething();
}

}

现在我正在这样做(在具有“详细信息”和“容器”作为属性的第三个类中)

public boolean hasNumberOfObjectRequired() {
int count = 0;
String type = details.getTypeOfObjectRequired();

if(type.equals("type1")) count = container.countType1();
else if (type.equals("type2")) count = container.countType2();
else if (type.equals("type3")) count = container.countType3();

if (count > details.getNumberOfObJectRequired) return true;
return false;
}

有更好的方法吗?我不喜欢有这么多 if,也是因为我有不止 3 种不同的类型。

编辑:现在我有 5 种不同的类型,但我总是只需要其中一种。基本上我想根据字符串调用不同的方法

最佳答案

Container 类可以包含其组成的列表的 Map:

class Container {
private Map<String, List<?>> lists = new HashMap<>();

private List<TypeOne> first = ...;
private List<TypeTwo> second = ...;

public Container() {
lists.put("type1", first);
lists.put("type2", second);
}

public int count(String type) {
return lists.get(type).size();
}
}

您可以通过调用count来根据类型获取大小:

public boolean hasNumberOfObjectRequired() {
String type = details.getTypeOfObjectRequired();
int requiredCount = details.getNumberOfObjectRequired();

return container.count(type) >= requiredCount;
}

关于java - 如何计算运行时选择的类型 "object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294036/

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