我真的不明白这个问题背后的逻辑,因此,我无法准确地搜索这样的事情是否已经存在。
假设我为对象创建了一个Java类。它只包含实例变量,getter / setter和用于创建空对象的构造函数。例如:
public class Bicycle {
private int speed;
private String model;
public Bicycle(int speed, String model) {
this.speed = speed;
this.model = model;
}
public int getSpeed() {
return speed;
}
public void setSpeed() {
this.speed = speed;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
现在让我说我有一个自行车的文本文件,如:
Bike 1234,60
Bike 333,50
Bike 555,20
我如何读取文件,然后将文本文件的每个部分分配给Bicycle.java中的变量?
我希望能够在其他方法中使用getter和setter。例如:
public static String searchBikes(int speed, String model) {
if (Bicycle bike.getSpeed().equals(speed) && etc. etc.
我不确定如何将文本文件中的每个自行车分配给Bicycle类中的变量。我需要另一类(如数据库)吗?我对此非常失落。
答案 0 :(得分:0)
现在最好的方法是java序列化,你可以为自行车定义一个人类可读的数据结构,并尝试将其转换为POJO(普通的旧java对象),其中一个选项是使用Json格式,它很容易阅读,有很多API用于转换字符串(子对象到POJO)Gson,Jackson等等
你文件的json表示可以是b:
{
"speed": 33,
"model": 50
}
使用此信息,您可以获取自行车类的实例,其中属性模型和速度可用于“普通”java对象。
答案 1 :(得分:0)
你应该阅读更多关于“类和对象”的内容,以完全理解什么是CLASS以及什么是类的实例 - 对象。
Oracle的网站可以是一个良好的开端https://docs.oracle.com/javase/tutorial/java/concepts/
关于你的具体问题,因为我们谈论对象面向编程,为什么不只是复制真实世界模型?自行车制造在哪里 - 在工厂里,使用某种规格,我们称之为蓝图。
您可以使用一个名为“createBycicles(File blueprints)”的方法创建一个名为BycicleFactory的类,该方法返回一个ArrayList。以下是有关名为Factory Design Pattern http://www.tutorialspoint.com/design_pattern/factory_pattern.htm
的设计模式(最佳实践)的更多信息在工厂内部,您必须读取文件(蓝图)并在每行创建一个新的Bycicle对象。我建议你使用扫描仪,因为它是最简单的。 http://www.java2s.com/Code/JavaAPI/java.util/newScannerFileReaderfile.htm
答案 2 :(得分:0)
Scanner fileScan = new Scanner(new File("yourfile.txt"));
List<Bicycle> bikes = new ArrayList<>();
while(fileScan.hasNextLine()){
String[] line = fileScan.nextLine().split(",");
Bicycle bike = new Bicycle(line[1],line[0]);
bikes.add(bike);
}
您文件中的自行车现在位于自行车列表中。