为toString()格式化输出重载或覆盖int方法()?

时间:2013-08-15 06:15:33

标签: java

我有一个班级存储数百万的数字。我想要做的是覆盖获取该数字的方法,并为可读的UIX输出应用字符串格式化器。

这就是我必须“重载”得到的东西:

class dudViewModel {
    public int gettotal () {
        return this.total;
    }
    public String gettotal(String formated) {
        return String.format("%.1f", (float)total / 1000000);
    }   
}

所以这是以下两个电话之间的区别:

gettotal(); // returns 23,400,000

and

gettotal("formatted");  // returns 23.4

在java中是否有更好的方法或模式来重载一个单独的方法(),它返回一个数字并使用tostring()调用覆盖i以某种方式覆盖默认数字返回,而是返回一个格式化的字符串?

4 个答案:

答案 0 :(得分:5)

我认为最好的方法是将演示文稿与业务逻辑分开。在这种方法中,您只需要一个getTotal()方法返回int。一个单独的类的完全独立的方法将采用int并为UI格式化它。

答案 1 :(得分:2)

or patter in java to overload an individual method() that returns a number and override i with a tostring()

您可以应用Decorator pattern,允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为

答案 2 :(得分:1)

将数据与其表示分开,您也可以单独测试它。

class Dud {

   public int getTotal () {return this.total;}
}

class DudPresentation {

     private Dud dud;         

     public DudPresentation(Dud dud){
         this.dud = dud;
     }


     public String getTotal() {
         return getTotal("%.1f");
     }

     public String getTotal(String format) {
         int total = dud.getTotal();
         return String.format(format, (float)total / 1000000);
     }   

}

答案 3 :(得分:1)

方法的作用必须在其名称中注明。在这种情况下,两个方法应该命名为不同而不是尝试重载,重载应该改变处理,而不是总效果或输出。

class dud {
   public int getTotal () {return this.total;}
   public String getFormattedTotal() {return String.format("%.1f", (float)total / 1000000);} 
   public String getFormattedTotal(String customFormat) {return String.format(customFormat, (float)total / 1000000);}  
}