java - 从文件对象枚举加载

标签 java

我将从文件中加载一个字符串并放入对象枚举中。

我创建了这样一个类:

public Passenger{

private String pass_name;
public enum State{

b,c,d;

};
....

State reser;

public Passenger(String n,State r)
      pass_name=n;
      reser=r;
}

在另一个文件中,我想读取一个文件并将字符串放在我可以创建对象乘客的方式中:

Passenger p=new Passenger(p_name,What should i put here)?

这是我的文件结构:

cod
passenger_name
reverved

cod 和 passenger 将通过 String 表示,而 reserved 应通过枚举表示。我将阅读文件:

 BufferedReader reader=new BufferedReader(new FileReader(fname));

 String cod=reader.readLine();
 while(cod!=null){
      String p_name=reader.readLine();
      how can i load a enum type?

      Passenger p=new Passenger(p_name,What should i put here)?
      cod=reader.readLine();

 }

最佳答案

使用YourEnumType.valueOf将您从文件中读取的字符串转换为枚举:

public class Passenger {
    public static enum State {
        New,
        Reserved,
        Paid
    }

    private String name;
    public State state;

    public Passenger(String name, State state){
        this.name = name;
        this.state = state;
    }

    public String toString() {
        return String.format("Passenger{name='%s', state=%s}", name, state.name());
    }
}

class Main {
    public static void main(String[] args) {
        // line read from file
        String stateString = "Reserved";
        // convert string into state
        Passenger.State state = Passenger.State.valueOf(stateString);

        // create the passenger
        Passenger pass = new Passenger("John Doe", state);
        System.out.println(pass);
    }
}

(我冒昧地制作了一个更清晰的示例代码版本。)

确保文件中的字符串与枚举常量的名称相同,包括大写字母,并且不包含额外的空格。

关于java - 从文件对象枚举加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363478/

相关文章:

java - 在 uClinux 上更新 java

javascript - 如何在 Angular js中将数据放入 session 中

java - 如何在没有外部库的情况下捕获 java 中的网络摄像头输入?

Java - 从 csv 文件创建嵌套 TreeView

Java thread.getContext().getClassLoader() 唯一性

java - 在字符串中查找数据

java - 获取嵌套在另一个 json 对象中的 json 数组

java - 使用 Maven、Jersey 和 Tomcat 8 从 Intellij 运行 REST 服务

java - Msort 错误,通用

java - pom 文件中的多个存储库不起作用