考虑这个功能:
public boolean foo(){
System.exit(1);
//The lines beyond this will not be read
int bar = 1; //L1
//But the return statement is required for syntactically correct code
return false; //L2
//error here for unreachable code
//int unreachable = 3; //L3
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么L1和L2明显无法访问不会发出警告但L3会发出警告.
我试图读取一个懒惰的初始化实体ProductUnits,它是一个持久集,并为此打开一个新的会话.
Session session = HibernateUtil.getSessionFactory().openSession();
session.update(stock.getProduct());
List<ProductUnits> units = new ArrayList<ProductUnits>(stock.getProduct().getUnits());
Run Code Online (Sandbox Code Playgroud)
问题是在运行时它抛出异常
org.hibernate.exception.GenericJDBCException: could not load an entity: [hibernate.tables.plain.Product#1]
Run Code Online (Sandbox Code Playgroud)
但在逐步调试时,它运行得非常好.是session.update需要一些时间还是我错过了什么
异常堆栈是
Exception in thread "AWT-EventQueue-0" org.hibernate.exception.GenericJDBCException: could not load an entity: [hibernate.tables.plain.Product#2]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1895)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:121)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905)
at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:863)
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:95)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at hibernate.tables.plain.Product_$$_javassist_15.getUnits(Product_$$_javassist_15.java)
at bill.mainBill.InputProductsPanel.computeStockAvailablity(InputProductsPanel.java:278)
at bill.mainBill.InputProductsPanel.findStock(InputProductsPanel.java:242)
at bill.mainBill.ProductDetailPanel.setStats(ProductDetailPanel.java:315)
at bill.mainBill.ProductDetailPanel$3.focusLost(ProductDetailPanel.java:187)
at java.awt.AWTEventMulticaster.focusLost(Unknown …Run Code Online (Sandbox Code Playgroud) 给定一个对象,我们如何检查一个类是否是单例的?
目前我正在使用这个
public class SingletonClass implements IsSingleton
Run Code Online (Sandbox Code Playgroud)
其中IsSingleton是我在单例类上实现的空白接口。所以这个类可以作为单例进行测试
SingletonClass obj = SingletonClass.getInstance();
if(obj instanceof IsSingleton)
System.out.println("Class is Singleton");
else
System.err.println("Class not singleton");
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来确定 Singleton 类。我已经尝试过reflection,但问题是getConstructors()只返回声明的公共类。因此它将把没有声明构造函数的类视为单例。