我有以下课程
public class Foo {
private long var1;
private float var2;
private double var3;
/* getter and setter
*/
}
要将数值打印到命令行,我使用String.valueOf(obj.getVar2()),但这将导致9.888888888。 有没有办法为所有数字getter生成格式化输出(float,double)? 我有一个功能' bar' ,它会将给定的数值格式化为字符串。现在,我想调用像obj.getVar2()。toString()这样的函数,将数值作为格式化字符串从' bar'中恢复。 有可能吗?
答案 0 :(得分:1)
您可以为Foo类添加方法:
public String getVar1AsString() {
return Utils.bar(var1);
}
但您无法在内部更改Float.toString()
或Double.toString()
的语义以使用bar
。
另一种方法是提供您自己的CustomFloat
或CustomDouble
课程,并在您的应用中随处使用。
答案 1 :(得分:1)
有很多方法可以获取格式化数字:
class Foo {
private long var1;
private float var2;
private double var3;
public double getVar3() { return var3; }
public float getVar2() { return var2; }
public long getVar1() { return var1; }
public String getFormatVar3() {
// third way
return String.format("%XXX", var3);
// or
return this.bar(var3);
}
@Override
public String toString() {
// first way
return String.format("%XXX %XXX %XXX", var1, var2, var3);
}
public static void main(String[] args) {
// second way
Foo foo = new Foo();
String format = String.format("%XXX", foo.getVar1());
}
private String bar(Number n) {
// discover type of number
return String.format("%XXX", n);
}
}
其中,%XXX
是您的格式。
答案 2 :(得分:0)
如果bar是非静态方法 - obj.bar(obj.getVar2());
如果bar是静态方法 - Foo.bar(obj.getVar2());
顺便说一下你的类定义是错误的。它应该是public class Foo {
而不是public class Foo() {