【问题标题】:Java Custom Object creation using assignment operator [duplicate]使用赋值运算符创建 Java 自定义对象 [重复]
【发布时间】:2020-05-14 21:15:16
【问题描述】:

我想像字符串一样使用赋值运算符创建我的自定义对象。

例如,

如果我想以简单的方式创建员工类的对象,例如 -

Class Employee{
   private String name;
   private int age;
   private String country; 
}

Employee employee = "Bagesh,27,India";

那么是否可以像 String 类一样创建对象呢?或者任何人都可以建议字符串赋值运算符对象创建的内部工作。

我已经在很多链接上搜索过,但没有得到完整的答案。

【问题讨论】:

  • 答案是否定的。这是不可能的。
  • 这能回答你的问题吗? Assignment Operator Overloading Java
  • 最好的办法是创建一个构造函数。员工employee = new Employee("Bagesh",27,"India");
  • 只能使用这样的赋值运算符创建字符串文字。自定义对象需要通过构造函数创建。字符串消息 = "Hello World";

标签: java


【解决方案1】:

那么是否可以像 String 类一样创建对象呢? [...]Employee employee = "Bagesh,27,India";

不,你不能那样做。您需要某种形式的运算符重载(赋值重载或字符串引号的重载),而这在 Java 中是不可能的。

你可以这样做:

Employee employee = new Employee("Bagesh,27,India");

虽然这很奇怪,但你不妨把你的字符串分开然后做:

Employee employee = new Employee("Bagesh",27,"India");

如果你想要一些更短的东西,你可以委托给一个单独的方法,用一个短名称:

Employee employee = fromStr("Bagesh",27,"India");

...并实现fromStr() 来调用您的构造函数,尽管在本例中采用这种方法没有什么意义。

上述的其他“风格”都是可能的——工厂类、静态工厂方法等——但它们都不会给你在问题中定义的语法。

【讨论】:

    【解决方案2】:

    不,这是不可能的。

    String 类在 Java 中是特殊的。编译器对此有特殊的了解,并且知道如何为例如生成字节码。 = 运算符(分配对字符串池中预分配字符串的引用)和 + 运算符(调用 .concat())。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2018-05-13
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多