【问题标题】:How to name an object reference after a String [duplicate]如何在字符串之后命名对象引用[重复]
【发布时间】:2013-06-15 14:13:34
【问题描述】:

例如,我们有

String name = "Peter";

我们希望假设Employee 的特定实例以此字符串命名,如

Employee ____ = new Employee(...);

那我要放什么?

【问题讨论】:

  • 你为什么要那个?无论您如何命名局部变量,程序都将以相同的方式工作。编译器甚至会删除这些信息。

标签: java string object reference


【解决方案1】:

我不确定这是否可以在 Java 中完成。您可以改用Map,其中键是员工姓名"Peter",值是Employee 对象。但在这种情况下,您需要通过使用Employee 类的其他字段覆盖hashCode()equals() 方法来区分两个具有相同名称的Employee 对象。

Map<String, Employee> employeeMap = new HashMap<>();
employeeMap.put("Peter",  new Employee("Peter")); // assuming you have this constructor
Employee e = employeeMap.get("Peter");

更好的方法是使用一些唯一的ID 作为Map 的键,例如员工ID。

如果 Employee 有一个名为 "name" 的字段。您可以在构造函数中或使用 setter 方法进行设置。

【讨论】:

    【解决方案2】:

    变量名称在 Java 中不相关 - 它们在您的代码编译后会丢失,只是为了方便程序员。因此,不可能像这样动态地命名变量。

    您可以将name 设为Employee 类的字段,也可以按照其他人的建议使用Map&lt;String, Employee&gt;。如果您需要一种快速按姓名查找员工的方法,后一种选择可能是最好的方法。

    【讨论】:

      【解决方案3】:

      您只能命名保存引用的局部变量。

      Employee peter = new Employee("peter");
      

      如果您希望能够查找员工我的姓名,您可以这样做

      Map<String, Employee> employeeMap = new LinkedHashMap<>();
      
      employeeMap.put("peter",  new Employee("peter"));
      
      Employee e = employeeMap.get("peter");
      

      【讨论】:

        猜你喜欢
        • 2021-10-30
        • 2019-11-16
        • 2021-09-04
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        相关资源
        最近更新 更多