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))然后重载构造函数:public-Rational(int-integer)(或者更好,提供一个命名的静态工厂方法),并让调用调用它: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