public class EnumMethod {
   public enum Title{
      MR("Mr."), MRS("Mrs."),MS("Ms");
      private final String title;   //为什么可以是final
      private Title(String t){
         title = t;
      }
      public String formate(String last, String first){
         return title + " " + first +" "+last;
      }
   }
   public static void main(String[] args) {
      System.out.println(Title.MR.formate("do", "undo"));
      System.out.println(Title.MRS.formate("do", "undo"));   //按理说只有一个引用的
   }
}

解决方案 »

  1.   

    final只是用来标识这个引用不能被修改。
      

  2.   

    final只是用来标识这个引用不能被修改,数据是可以变化的。例子
    public class FinalTest {
    StringBuffer  str = new StringBuffer("old");
    private final StringBuffer fin = str; public static void main(String[] args) {
    FinalTest s = new FinalTest();
    s.test();
    }
    private void test(){
    System.out.println(fin);
    System.out.println(str);
    str.append("new");
    System.out.println(fin);
    System.out.println(str);
    }
    }输出结果:
    old
    old
    oldnew
    oldnew说明fin的数据变换了。
      

  3.   

    为标记为final的类属性赋值,有两种方式:
    1.声明的同时赋值;
    2.声明时不赋值,到构造器中再赋值;不管使用哪种方式,一旦赋值之后,就不能再重新赋值了。