如何從方法內創建的隱式對象內部訪問外部變量?如何在匿名內部類中使用外部變量
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」,你也不需要做任何修改。 –