2016-03-25 2 views
1

У меня есть следующий класс:Как установить объекты Перечислить тип в конструкторе?

public class Owner { 

    private final Integer id; 
    private final OwnerType type; 

    public Owner(Integer iId, Enum eType) { 
     this.id= iId; 
     this.lastName = lName; 
     this.type = eType // how should that work? 
    } 

} 

И

public enum OwnerType { 
    HUMAN,INSTITUTION 
} 

Что я звоню через:

try { 
    File file = new File("resources/Owner.txt"); 
    Scanner fileContent = new Scanner(file); 
    while (fileContent.hasNextLine()) { 
      String[] person = fileContent.nextLine().split(" "); 
      this.data.add(new Owner(owner[0],owner[1])); 
     } 
    } catch (FileNotFoundException err){ 
     System.out.println(err); 
    } 

Где Owner.txt имеет формат:

ID TYPE 

Как что:

1 HUMAN 
2 INSTITUTION 

Мой вопрос:

Как я могу указать type свойство моего владельца объекта, когда я звоню следующий?

new Owner(owner[0],owner[1]) 
+0

Что такое 'владелец'? какой тип (ы) он удерживает? – Stultuske

+4

Во-первых, можете ли вы изменить имя 'Enum', чтобы оно не было * имя класса в пакете' java.lang'? Это сделает ваш код и ваш вопрос намного проще. –

+0

Ваше имя «конструктора» ('AccountOwner') не соответствует имени класса (' Owner'). – Mena

ответ

2

Есть две проблемы.

Во-первых, конструктор Owner «S должен получить OwnerType, не просто Enum:

public Owner(Integer iId, OwnerType eType) { 
    this.id= iId; 
    this.type = eType; 
} 

При разборе входного файла, вы можете использовать метод valueOf для преобразования строкового значения в OwnerType:

this.data.add 
    (new Owner(Integer.parseInt(owner[0]), OwnerType.valueOf(owner[1]))); 
1

Любой объект перечисления имеют по умолчанию метод valueOf (Key String), поиск того, что этот метод не является в всех определенных значений в классе перечислений и вернуть право один, если найти его.

Для получения дополнительной информации держать на глаза на это:

https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#valueOf%28java.lang.Class,%20java.lang.String%29enter link description here

В данном конкретном случае перечислений;

public enum OwnerType { 
    HUMAN,INSTITUTION 
} 

, если мы используем OwnerType.valueOf ("HUMAN"), возвращает перечисление человеческих

Здесь используйте:

try { 
    File file = new File("resources/Owner.txt"); 
    Scanner fileContent = new Scanner(file); 
    while (fileContent.hasNextLine()) { 
     String[] person = fileContent.nextLine().split(" "); 
     this.data.add(new Owner(person[0],OwnerType.valueOf(person[1]))); 
    } 
} catch (FileNotFoundException err){ 
    System.out.println(err); 
} 
+0

Пожалуйста, объясните свой ответ. Дампы кода без объяснения не полезны. –

Смежные вопросы