在java中构造对象时,是否有键入this.x=x的快捷方式?

在java中构造对象时,是否有键入this.x=x的快捷方式?,java,this,shortcut,Java,This,Shortcut,当我将一个参数(或者它是一个参数?)存储到一个类的私有实例变量时,是否有更快的方法写入this.x=x(其中x是构造函数的参数,this.x是实例变量)?有时对于较长的变量名,我发现它有点重复,是否有类似x++等等 我是Java新手,如果我能说得更清楚,请告诉我。不,不太清楚。我不确定你所说的x++——这是后缀增量运算符——但分配变量的唯一方法是分配它们 例如: public class Student { private String name; private int ag

当我将一个参数(或者它是一个参数?)存储到一个类的私有实例变量时,是否有更快的方法写入
this.x=x
(其中x是构造函数的参数,
this.x
是实例变量)?有时对于较长的变量名,我发现它有点重复,是否有类似
x++等等


我是Java新手,如果我能说得更清楚,请告诉我。

不,不太清楚。我不确定你所说的
x++
——这是后缀增量运算符——但分配变量的唯一方法是分配它们

例如:

public class Student {

    private String name;
    private int age;
    private double gradePointAverage;

    public Student(String name, int age, double gradePointAverage) {
        this.name = name;
        this.age = age;
        this.gradePointAverage = gradePointAverage;
    }
}

大多数IDE都有一个快捷方式来自动生成构造函数。例如,IntelliJ允许您键入alt+insert,这将显示一个上下文菜单,允许您自动生成构造函数、getter和setter。

否。您可以使用IDE来帮助您完成此操作。试试看


使用IDE,您可以或

没有更简单的方法来实现这一点。如果不想这样做,可以在字段名或参数变量名后加上“1”或“2”。

一般来说,没有语法速记。但是,有一些方法可以避免这样做。特别是,我是一个非常喜欢的项目,该项目允许您使用最小的锅炉板进行定义,例如:

@AutoValue
abstract static class Animal {
  static Animal create(String name, int numberOfLegs) {
    return new AutoValue_Animal(name, numberOfLegs);
  }
  abstract String name();
  abstract int numberOfLegs();
}

由于
auto/value
充分利用了这一点,因此对于不使用Maven或Ant的小型程序来说,这不是一个好的解决方案,但对于小型项目来说,您可能不会介意使用温和的
this.x=x冗余。

否-但如果您使用IDE,它应该不会有问题。试试IntelliJ。这是一个奇怪的事情,想要优化,这不是一个非常普遍的情况。真的吗?值类型的构造函数只将参数写入实例变量是很常见的。@dimo414当然,但你会花一整天的时间编写新的值类吗?@Cubic我明白你的意思,但事实上,如果不是像
auto/value
和protocol buffers;)这样的工具,我可能会这么做感谢您的详细回复!我不知道IDE可以自动生成构造函数。使用此功能时,
super()自动添加到构造函数中。你能解释一下它为什么添加这个吗?@mover96
super()
调用父构造函数。如果您的类扩展了另一个类,则会执行父构造函数中定义的初始化。如果您的类是一个独立的类,就像我在示例中所使用的那样,那么
super()
正在调用
java.lang.Object
上的构造函数,据我所知,这是一个不可操作的类。