我在Object类中有一个构造函数,它将其输入值传递给一个函数,该函数返回相同类型的对象,我想知道为什么不能在一行中设置新对象的所有实例变量,如下所示:this = function();以下是我当前的解决方案:

public class Fraction {
    long num;
    long den;

    public Fraction(double numIn, double denIn){
        Fraction temp = reduceFraction(numIn, denIn);
        num = temp.num;
        den = temp.den;
    }

我也可以这样做:

    public Fraction(double numIn, double denIn){
        Fraction temp = reduceFraction(numIn, denIn);
        this.num = temp.num;
        this.den = temp.den;
    }

像这样的东西会干净得多,但不起作用:

    public Fraction(double numIn, double denIn){
        this = reduceFraction(numIn, denIn);
    }

由于我的对象只有两个实例变量,单独设置每个变量并不是什么大不了的事情,但是对于更复杂的对象,这似乎真的很不方便.有没有比我目前的解决方案更干净的方法来完成这项任务?

推荐答案

您不能简单地尊重实例本身.

假设它不是公共静电方法,为什么不让Reduce函数自己赋值本地实例变量呢?

如果它是一个公共的静电方法,您只会这样做

Fraction f = Fraction.reduceFraction(numIn, denIn);而不是Fraction f = new Fraction(numIn, denIn)

在reduce方法中,我假设你做了return new Fraction(numIn, denIn)次?如果是这样的话,我想你会有一个递归构造函数循环

Java相关问答推荐

如何让HikariCP指标在NewRelic中正确显示?

将偶数元素移动到数组的前面,同时保持相对顺序

使用ExecutorService时在ThreadFactory中触发自定义newThread函数

springboot start loge change

使用动态ID从json获取详细信息的Jolt规范

使用联接和分页的SpringBoot Spring数据JPA

对某一Hyroby控制器禁用@cacheable

获取字符串中带空格的数字和Java中的字符

Java编译器抛出可能未正确初始化的错误?

如何从错误通道回复网关,使其不会挂起

使用OAuth 2.0资源服务器JWT时的授权(授权)问题

如何在太阳系模拟器中添加月球?

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

泛型与泛型问题的完美解决方案?

活泼的一次判断成语,结果中等

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

ResponseEntity.控制器截断响应的JSON部分

ReturnedRect在升级后反转

转换为JSON字符串时,日期按天递减-Java

如何显示新布局