我遇到了以下类型的代码:
@ManagedBean
@SessionScoped
SomeClass<T> {
... blah-blah
}
由于框架将其实例化为没有类型信息的通用 SomeClass 对象,您是否看到此类代码的任何好处?或者你会把它归类为代码味道吗?
答案 0 :(得分:7)
泛型是编译时语法糖(因此在运行时完全不存在)。 JSF在运行时(通过反射方式)实例化bean。所以,是的,这绝对是代码味道。只有SomeClass
是托管bean扩展自的基类(但它本身不是托管bean)才有意义。
E.g。
public abstract class CrudBean<T extends SomeBaseEntity> {
private List<T> entities;
// ...
}
和
@ManagedBean
public class ProductsBean extends CrudBean<Product> {
// ...
}