当前位置: 首页 > 知识库问答 >
问题:

Java构造器链接[复制]

臧俊杰
2023-03-14

大家好,我正在学习Java中的构造函数链接,我有一些问题。。。

>

  • 首先,有人能解释一下我什么时候需要使用这个吗?我真的想不出一个情况。

    在这个例子中,在没有参数的构造函数中,我调用了另一个构造函数。我如何访问这个新的“詹姆斯·邦德”对象以备将来使用?

    import java.util.*;
    
    class Employee
    {   
        private String name;
        private double salary;
    
        public Employee()
        {
            this("James Bond", 34000);
        }
    
        public Employee(String n, double s)
        {
            name = n;
            salary = s;
        }
    
        public String getName()
        {
            return name;
        }
    
        public double getSalary()
        {
            return salary;
        }
    
        public static void main(String[] args)
        {
            Employee a = new Employee();
        }
    }
    
  • 共有3个答案

    甘君之
    2023-03-14

    >

    它存储在名称字段中。所以你可以通过这个从对象本身访问它。name这个是可选的,就像在getName()方法中一样)。

    谈灵均
    2023-03-14

    像这样链接构造函数有助于避免重复代码,并有助于提高可维护性:

    public MyClass(int x, double y, String z) {
        // set fields
    }
    
    public MyClass() {  // i.e. a constructor that uses default values
        this(42, 4.2, "hello world");  // x is 42, y is 4.2, and z is "hello world"
    }
    

    如果我们没有使用链,并且想要在构建MyClass的实例时更改x参数的处理方式(例如),我们将不得不在两个构造函数中更改代码。有了链条,我们只需要改变其中一个。

    令狐晟
    2023-03-14

    实际上,我相信链式构造函数最常见的用法是当构造函数不仅仅是设置成员变量时。

    static int numOfExamples = 0;
    public Example(String name, int num)
    {
        this.name = name;
        this.num = num;
        numOfExamples++;
        System.out.println("Constructor called.");
        Log.info("Constructor called");
    }
    
    public Example()
    {
        this("James Bond",3);
    }
    

    这样我们就不必编写记录静态变量并使其递增两次的代码,而只需链接构造函数。

     类似资料:
    • 问题内容: 这些来自github上的spring amqp示例,位于https://github.com/SpringSource/spring-amqp- samples.git 这些是 什么类型的Java构造函数?它们是吸气剂和吸气剂的捷径吗? 与此相反 问题答案: 这些构造函数被重载以使用调用另一个构造函数。第一个无参数构造函数使用空参数调用第二个。第二呼叫的第三构造(未示出),其必须采取,

    • 问题内容: 有人可以说明一下可能有用的场景类型吗? 这是一种好的编程习惯吗? 问题答案: 这绝对是个好习惯,主要有两个原因: 避免代码重复 实施良好的封装

    • 我通过各种站点了解java不支持多重继承。其中一个原因是为了避免像强制转换和构造函数链接这样的问题。多重继承如何导致Java中的强制转换和构造函数链接问题?有人能举例给我解释一下吗。

    • 我在C中创建了一个链接列表,当将新项目插入列表时,我遇到了访问冲突。 如果从未调用复制构造函数,并且在整个程序执行过程中都使用原始列表,则该列表可以完美地工作。 在按值调用函数outList创建要在其范围内管理的列表的副本后,我在插入方法中遇到错误。 列表维护一个指向活动元素ListElement的光标(指针)。列表包含“gotoNext”和“gotoPrior”等方法。复制构造函数的目标是创建列

    • 什么是构造函数链接,它是如何在java中实现的,请给我举个例子

    • 我已经阅读了链接 Akka和Spring配置 http://doc.akka.io/docs/akka/2.4.1/java/untyped-actors.html Spring在Akka 2.4.1中不再作为模块提供,但可以创建并用作扩展。我还理解,由类似Spring的DI-fwk管理bean/actor创建的概念可能会与Akka actor父子/监管模型产生根本冲突。所以我仍然不知道如何将这些