你应该在你的
Fraction
public class Fraction{
private int numerator;
private int denominator;
public Fraction(final int numerator, final int denominator){
this.numerator = numerator;
this.denominator = denominator;
}
public int getNumerator(){
return this.numerator;
}
public int getDenominator(){
return this.denominator;
}
public void setNumerator(final int numerator){
this.numerator = numerator;
}
public void setDenominator(final int denominator){
this.denominator = denominator;
}
}
public Fraction add(Fraction f) {
int add1 = (this.numerator*f.getDenominator())+(this.denominator*f.getNumerator());
int add2 = this.denominator*f.getDenominator();
return createFraction(add1,add2); //createFraction can be simply new Fraction(add1, add2);
}
您可以使用反射来获取字段的值,方法是使用
Field.setAccessible
用法示例:
Field field = f.getClass().getDeclaredField("numerator");
f.setAccessible(true);
int numerator = (int) field.get(f);
public Fraction add(Fraction f) throws NoSuchFieldException, IllegalAccessException{
Field fieldNumerator = f.getClass().getDeclaredField("numerator");
fieldNumerator.setAccessible(true);
Field fieldDenominator = f.getClass().getDeclaredField("denominator");
fieldDenominator.setAccessible(true);
final int numerator = (int) fieldNumerator.get(f);
final int denominator = (int) fieldDenominator.get(f);
int add1 = (this.numerator*denominator)+(this.denominator*numerator);
int add2 = this.denominator*denominator;
return createFraction(add1,add2);
}