Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—为自己的对象隐式类型转换_Java_Casting - Fatal编程技术网

Java—为自己的对象隐式类型转换

Java—为自己的对象隐式类型转换,java,casting,Java,Casting,我用构造函数为分数编写了自己的类,如下所示: class Rational { //A Class representing Rationals long numerator ; long denominator; Rational (long numerator , long denominator) { this.numerator = numerator ; this.denominator = denominator;

我用构造函数为分数编写了自己的类,如下所示:

class Rational {
    //A Class representing Rationals
    long numerator ;
    long denominator;
    Rational (long numerator , long denominator) {
        this.numerator = numerator ;
        this.denominator = denominator;
        if (this.denominator < 0) {
            this.numerator *= (-1);
            this.denominator *= (-1);
        }
    }

    Rational (Rational rational) {
        this.numerator = rational.numerator ;
        this.denominator = rational.denominator;
        if (this.denominator < 0) {
            this.numerator *= (-1);
            this.denominator *= (-1);
        }
    }
}
这个想法是,它的隐式铸造从2到2/1


已经谢谢你的帮助了

这还不清楚;为什么不为
add
提供重载呢?我必须重载太多的方法。在示例中,我的类将add实现为静态方法和非静态方法。sub、div、mul、shorten、expand等的功能也相同。。。。这将是一件痛苦的事情,要再次实现它们需要大量的工作,而且隐式转换更容易使用。唉,Java中不存在隐式转换。可以考虑编写静态助手方法;然后你可以单独做
rationalOne.add(rat(2))r.add(new-Rational(integer))。编译器无法神奇地为您生成代码。你必须写它。有隐式转换,比如从int到long。我的希望是,通过用某种代码编写隐式强制转换,有可能实现您自己的隐式强制转换。
Rational rationalOne = new Rational (1L, 2L); //this represents the fraction 1/2
rationalOne.add(2);                           //add takes a rational as an argument