请问Java中有类似于C++中的const么?
比如   我的类为   
 public   class   SomeClass 
 { 
          private   SomeClass2   m_member;   
          public   SomeClass2   getMember() 
          { 
                   return   m_member; 
          } 
 }   
 在这里,   getMember传回去的应该是指针吧,   如果我不想让别人可以更改   m_Member所封装的任何值   
 SomeClass2   instance   =   someClass.getMember(); 
 instance.changeValue();     
 我该怎么办那?   除了   return   m_Member.clone();     
 这类似于   
 C++    
       public: 
                SomeClass2   getMember()   const;   
 或者 
 C# 
       public   readonly   SomeClass2   getMember();   
 请各位大侠赐教:D   
------解决方案--------------------final
------解决方案--------------------如果你不想改变m_member引用的对象,那么将m_member声明为final就可以了;   
 看你的意思是不想改变m_member里面的值,那么就只有在SomeClass2的定义里面做文章了;   
 例如将SomeClass2的成员定义为final,或者使用一些模式也可以实现。
------解决方案--------------------对method 而言 final 是不允许override的意思,对field而言就是相当于定义该field为常量。但是我觉得即使把reference类型变量m_meber定义为final也不能实现你保护该对象内部数据的目标,因为这只是表明这个reference变量是常数,而不是它refer的object中封装的数据就不能被改变了。我觉得你应该考虑用为SomeClass2类的method设置恰当的access specifier(e.g protected )来实现保护封装数据的目的。
------解决方案--------------------楼上的见解很接近了,大体来说,你用方法返回的是成员引用,只要那个引用的对象提高了更改其内部状态的方法,你就休想把他设为不可更改的对象,所以,你要做的是修改对象的类型,考虑继承或聚合修改对象的可访问接口。 
 以下引用lz的代码: 
 public class SomeClass 
 { 
    private SomeClass2 m_member;   
    public SomeClass2 getMember() 
    { 
       return m_member; 
    } 
 }   
 在这里, getMember传回去的应该是指针吧, 如果我不想让别人可以更改 m_Member所封装的任何值   
 SomeClass2 instance = someClass.getMember(); 
 instance.changeValue();   
 你能做的,不是将someClass.getMember()作什么处理,而是对SomeClass2进行修改,让它不具备changeValue()的方法。