你能通过连接另外两个变量来创建一个唯一的变量名吗?

时间:2015-04-21 01:05:07

标签: java class object

我正在尝试创建一个方法,该方法将基于我在同一个项目中拥有的另一个类创建一个新的唯一对象。我知道最后一行不会编译,但是有没有办法实现同样的目标?

理想情况下,如果fName = John和lName = Smith,那么新的"员工"在最后一行创建的对象将被称为" JohnSmith"但目标只是在每次调用方法时创建对象的唯一实例

public static void createEmployee(int number){

   Scanner input= new Scanner(System.in);
   System.out.printf("Enter first name for employee %s: ",number);
   String fName=input.next();
   System.out.printf("Enter last name for employee %s: ",number);
   String lName=input.next();
   Employee fName+lName= new Employee(fName,lName);
   }

我对Java和面向对象编程都很陌生,所以如果我发现这个错误,我愿意采用不同的方式。

4 个答案:

答案 0 :(得分:2)

不,你所描述的是不可能的。

作为概念练习,您的变量应描述他们持有的数据类型。这可能听起来很简单,但employeeJohnSmithSteveJobs或任何其他第一个+姓氏组合更适合该变量。

如果您打算每次都创建Employee的新实例,则应该从方法返回Employee实例,而不是声明它void。然后你可以随心所欲地使用它。

public static Employee createEmployee(int number){

   Scanner input = new Scanner(System.in);
   System.out.printf("Enter full name of employee %d, separated by spaces: ", number);
   String fName = input.next();
   String lName = input.next();
   return new Employee(fName, lName);
}

答案 1 :(得分:1)

你不能这样做。但请记住,很多人约翰史密斯"存在 - 你很容易遇到同音异义词。

如果这些问题不存在,您可以使用Map将密钥(使用Surname + Name制作的字符串)绑定到值(您的员工)。

祝你好运,欢迎来到StackOverflow!

<强>更新

如果同音异义词 有问题,则需要使用唯一ID;他们向你保证你没有重叠。您可以在Employee中创建一个ID,并将它们放在List中,或者您可以将它们放在Array中 - 然后ID将成为它们在数组中的位置。

答案 2 :(得分:0)

没有。你不能组合这样的变量,但你可以说像

// Employee fName+lName= new Employee(fName,lName);
Employee employee = new Employee(fName, lName);

如果Employee覆盖toString(),那么

System.out.println(employee); 

应该为您提供您期望的输出。

答案 3 :(得分:0)

我是第二个hashmap。具有动态创建的人类可读变量名称过于复杂。使用散列映射,您可以使用字符串

引用该对象
HashMap<String, Employee> employees = new HashMap<String, Employee>();

employees.put(fName + lName, new Employee(fName, lName));

获得雇佣对象

employees.get(fName + lName);
相关问题