gpt4 book ai didi

java - 通用类还是抽象类?

转载 作者:行者123 更新时间:2023-11-30 04:29:01 26 4
gpt4 key购买 nike

我的应用程序中有三个类 User , Group , Company正如它们的名字所示,它们不属于同一继承树。每个类都有一个构造函数,它接收多个(不同的)参数,即: User(String name, String password, int type) , Group(String name, String name) , Company(String name, int employees, boolean isValid) 。对于所有类,每个构造函数所需的参数数量并不相同。我创建了一个类 ReadDataFromFile从 txt 文件读取一些数据并创建新对象,将数据作为参数传递给上述构造函数。对于每种类型来说,这个类的代码显然都是相同的,除了创建对象的一个​​方法之外。因此,创建三个不同的类是不合适的,但我最好以更好的设计方法为目标。

我的问题是,此时合适的设计是通用类,还是抽象类,并在其子类中实现一个不同的方法 createObject() ,假设来自 txt 文件的必要数据被放入每个类型具有不同长度的 String 数组中。我想遵循通用类的方法:class ReadDataFromFile<T>{} ,但我找不到应该如何处理不同类型,因为每种类型都需要调用不同的构造函数。我应该检查 instanceof 的类型吗?我应该将每个对象的类传递给该方法吗?或者,还有更好的方法?

最佳答案

不明白为什么您将问题提出为“抽象通用”,看起来常见的解决方案是两者兼而有之。

public abstract class ReadFromFile<T> {

public T readFile(File file) {
String[] rawInput = doSomeStuffCommonToAll();
return constructObject(rawInput);
}

abstract T constructObject(String[] rawInput);
}

public class UserFileReader extends ReadFromFile<User> {

@Override
User constructObject(String[] rawInput) {
return new User(rawInput[0], rawInput[1], Integer.parseInt(rawInput[2]);
}
}

关于java - 通用类还是抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097723/

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