4

我遇到了以下类型的代码:

@ManagedBean
@SessionScoped
SomeClass<T> {
    ... blah-blah
}

由于框架将其实例化为没有类型信息的通用SomeClass对象,您是否看到此类代码有任何好处?还是您会将其归类为代码异味?

4

1 回答 1

7

泛型是编译时语法糖(因此在运行时完全不存在)。JSF 在运行时实例化 bean(通过反射方式)。所以,是的,这绝对是代码异味。SomeClass仅当托管 bean 扩展自基类时才有意义(但它本身根本不是托管 bean)。

例如

public abstract class CrudBean<T extends SomeBaseEntity> {
    private List<T> entities;
    // ...
}

@ManagedBean
public class ProductsBean extends CrudBean<Product> {
    // ...
}
于 2013-01-16T18:22:29.243 回答