有没有办法从字符串的值创建具有对象名称的对象

时间:2014-12-01 04:17:59

标签: java

class states{

    List<String> cities = new ArrayList<String>();

    public void add_city(String current_city){
        this.cities.add(current_city);
    }
}

class add_values{

    public static void main(String [] args){
        System.out.println("Enter the state name : ");
        Scanner sc = new Scanner(System.in);
        String user_state = sc.nextLine(); // need to create an object with the name from a string value
        states user_state = new states();
        ....
        ....
    }
}

是否可以使用字符串中的名称为类创建对象。

如果用户输入状态名称为&#34;密歇根州&#34;,则使用&#34;密歇根州&#34;创建一个对象。这是从扫描仪获得的。可以为密歇根州增加城市和城市。

2 个答案:

答案 0 :(得分:4)

您需要了解对象没有名称 - none,zero,zip。是的,变量可以有名称,但这是不一样的,因为两个或多个变量可以引用同一个对象,当发生这种情况时,哪个名称是对象的名称?同样,没有/ none,因为对象没有名称。至于变量名,它们的重要性不如你所认为的那么重,而且几乎在编译代码中不存在。最重要的是对象 引用 。这里的对象 可以关联通过一个Map,例如HashMap<String, String>,类似于使用String作为其数组的ArrayList或ArrayList索引而不是数字。

现在已经说过了,你可以给你的State类一个String name字段,这可能很适合你的用途。

即,

import java.util.ArrayList;
import java.util.List;

public class State {
   private String name;
   private List<String> cities = new ArrayList<>();

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

   public String getName() {
      return name;
   }

   public void addCity(String city) {
      cities.add(city);
   }

   public List<String> getCities() {
      return cities;
   }

   @Override
   public String toString() {
      return "State of " + name + ", Cities: " + cities;
   }

}

可以像以下一样运行:

public class StateTest {
   public static void main(String[] args) {
      State illinois = new State("Illinois"); 
      illinois.addCity("Chicago");
      illinois.addCity("Peoria");
      illinois.addCity("Springfield");

      System.out.println(illinois);
   }
}

答案 1 :(得分:0)

您可以使用HashMap执行不同的操作。希望这有助于实现您的目标。这是代码:

class States{

    List<String> cities = new ArrayList<String>();

    public void add_city(String current_city){
        this.cities.add(current_city);
    }
}

class add_values{

    public static void main(String [] args){
        HashMap<String, States> userStatesMap = new HashMap<String, States>();
        System.out.println("Enter the state name : ");
        Scanner sc = new Scanner(System.in);
        String user_state = sc.nextLine(); // need to create an object with the name from a string value
        userStatesMap.put(user_state, new states());

        ....
        ....
    }
}