如何从方法内创建的隐式对象内部访问外部变量?如何在匿名内部类中使用外部变量
public void insertMaterial() {
new Thread(){
public void run(){
com.ssn.acx.api.configuration.ParameterSet ps = com.ssn.acx.api.ACXObjectFactory.getConfigurationFactory().getLocalConfiguration().getParameterSet(com.ssn.acx.api.persistence.ACXPersistenceFactory.CFG_DEFAULT);
com.ssn.acx.api.persistence.ACXPersistenceFactory factory = com.ssn.acx.api.ACXObjectFactory.getPersistenceFactory(ps);
com.ssn.acx.api.persistence.ACXPersistenceSession session = factory.openSession();
com.ssn.acx.api.common.transaction.ACXTransaction tx = null;
WMSMaterial mat = null;
try {
tx = session.beginTransaction("InsertMaterial");
mat = new WMSMaterial("101", "Baby Lotion");
session.getPersistenceSession().insert(mat);
mat = new WMSMaterial("102", "Bubble Gum");
session.getPersistenceSession().insert(mat);
mat = new WMSMaterial("103", "Soda");
session.getPersistenceSession().insert(mat);
tx.commit();
} finally { if (tx != null && !tx.closed()) { tx.rollback(); } session.close(); }//end of try-catch-finally block
}//end of run method
}.start(); //end of Thread Object creation
} //end of insertMaterial method
例如,我需要,如果它被传递给insertMaterial()
方法ARGS来自属于隐线程对象run()
方法中,而不是创建线程对象内部Material
对象不得不Material
对象访问。
使用'final'或类成员。 –
或者,在Java 8中,确保该变量*有效最终*。也就是说,即使你没有明确地标记“final”,你也不需要做任何修改。 –