【问题标题】:How can I pass a String to name an object?如何传递字符串来命名对象?
【发布时间】:2013-10-06 00:03:07
【问题描述】:

我需要创建一些对象来填充 ArrayList。这些对象需要被唯一标识。我希望让用户命名对象。当我去传递String的引用变量来命名对象时,是不允许的。

String input;
Object { input } = new Object();
arrayList.addObject( { input } );

如果无法动态命名对象,我该如何创建这些对象?

【问题讨论】:

  • 很难准确理解您想要什么,但Map 是否能满足您的需求,例如HashMap<String,Object>
  • 感谢您的快速回复。有什么方法可以在不使用地图的情况下为用户输入的对象命名?
  • 你为什么不想使用地图?

标签: java object arraylist naming


【解决方案1】:

你不是想命名一个对象;您正在尝试命名一个变量。解决办法是:不要。 Java 不是这样工作的。在 Java 中,变量名实际上并不重要,并且在编译代码中几乎不存在。而references才是最重要的。而是使用Map<String, MyType> 将字符串与对象相关联。 HashMap<String, SomeType> 在这里可以很好地工作。

【讨论】:

    【解决方案2】:

    Object 没有name 字段。您可以创建自己的类,然后将该类的一个实例添加到您的集合中。

    你可以这样做:

    public class CustomItem
    {
            private String name;
    
            public CustomItem(String n)
            {
                this.name = n;
            }
    
            public String getName()
            {
                return this.name;
            }
    } 
    

    并将其添加到您的arrayList,如下所示:

    arrayList.add(new CustomItem("I1"));

    如果您想检查集合中的特定元素是否与某个名称匹配,您可以在该元素上调用 getName() 方法并比较它的某个名称。

    【讨论】:

    • 您将项目添加到 arrayList 的方式正是我想要的。谢谢!
    【解决方案3】:

    您可能不想使用Object 类。相反,您应该创建自己的类(该类自动继承自 Object,该类具有称为 nameString 字段。IE:

    Class MyClass{
        myClass(String s){ name = s;}
        private String name;
    }
    

    然后您可以执行MyClass myClass = new MyClass(name-inputted-by-user); 并将其添加到您的数组列表中。您可能还需要覆盖 equals 函数,以便它比较名称

    【讨论】:

      猜你喜欢
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 2012-02-20
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多