@Stateless
public class CustomerManager {
@PersistenceContext("Chapter03-Unit")
private EntityManager em;
public void createCustomer() {
final Customer cust = new Customer();
cust.setName("Moneybags MgGee");
em.persist(cust);
}}cust是FINAL类型号的, 为什么也可以改变它的NAME属性呢?
public class CustomerManager {
@PersistenceContext("Chapter03-Unit")
private EntityManager em;
public void createCustomer() {
final Customer cust = new Customer();
cust.setName("Moneybags MgGee");
em.persist(cust);
}}cust是FINAL类型号的, 为什么也可以改变它的NAME属性呢?
FINAL 倒底是可以改变什么东西? 可以改变对象的引用?
你这里修改的是cust实例的值,不是cust对象 final修饰的对象值不能被改变,我认为这里的final修饰
的cust对象是相对于它所引用的对象不能改变. 例如:
final String str = "test"; String str1 = "hello word";
这里就不能如下设置:
str = str1;
而cust中的属性Name是可以变的, 不受final的影响?
你自己看看final的定义就知道了 final用于修饰类,方法和变量.final所修饰的变量不能被改变!!!!! 仔细读读!!!!
而cust中的属性Name是可以变的, 不受final的影响?
面试题一般都有这个的
final Customer cust = new Customer();
cust.setName("Moneybags MgGee"); //right
Customer anotherCust=new Customer();
cust=anotherCust;//wrong