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

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

由于框架将其实例化为没有类型信息的通用 SomeClass 对象,因此您会从此类代码中看到什么好处?还是将其归类为代码气味?

最佳答案

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

例如。

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


@ManagedBean
public class ProductsBean extends CrudBean<Product> {
    // ...
}

10-06 08:56