gpt4 book ai didi

java - 创建一个新的通用对象 Java

转载 作者:行者123 更新时间:2023-11-30 09:50:38 25 4
gpt4 key购买 nike

我正在尝试编写一组对多个类进行类似操作的用户界面,它们都扩展了一个抽象类类别:HouseCategory extends Category,CarCategory extends Category

大多数代码仅通过使用多态性就可以正常工作,但有一个部分我需要创建扩展类别的新实例

Obj foo = new HouseCategory(a, b, c)

我怎样才能使它适用于 Category 的所有子类? - 它们都有相同的构造函数参数。我不太了解泛型,但是我可以将 UI 类定义为

public class UserInterface <T extends Category> extends JFrame {

或者可能

public class UserInterface  extends JFrame {
public UserInterface(Class<T extends Category> clazz) {

然后从那里开始 build ?非常感谢帮助。

编辑:此外,是否可以从通用类中获取静态字段?我宁愿不必检查“if (clazz instanceof HouseCategory) name = HouseCategory.NAME”的语句,因为可能有数百个类。

最佳答案

引入一个新的工厂 来创建类别对象或用户界面。每当添加新类别时都需要扩展工厂,但这应该不是什么大问题:

public class CategoryFactory {
public static enum Type {HOUSE, CAR}

public static Category createCategory(Type type, Param a, Param 2, Param b) {
if (type == null) return null;

switch(Type) {
case HOUSE: return new HouseCategory(a,b,c);
case CAR: return new CarCategory(a,b,c);
}
return null; // or throw exception -> tells, that a new enum is not handled yet
}
}

然后,如果您保护类别子类中的构造函数并将这些子类和工厂保存在同一个包中,您就很难绕过工厂。

关于java - 创建一个新的通用对象 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075077/

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