如何自定义泛型类型?

Jus*_*tin 1 java generics interface

我有这样的界面:

public interface BeanCreator<T> {   
   public T createBean();
   public Class<T> getClazz();
}
Run Code Online (Sandbox Code Playgroud)

我试着定制它:

public class CustomizedBeanCreator<T> implements BeanCreator<T>{

    @Override
    public T createBean() {
        CustomizedBean bean = new CustomizedBean();
        bean.setId(-2323);
        bean.setName("this bean is created by a customized creator");       
        @SuppressWarnings("unchecked")
        T t = (T)bean;      
        return t;
    }

    @SuppressWarnings("unchecked")
    @Override
    public Class<T> getClazz() {
        return (Class<T>) CustomizedBean.class;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于这两个@SuppressWarnings,我感到不舒服.

我该怎么做才能解决这个问题?

谢谢!

Ell*_*sch 5

更改签名(和实现)

public class CustomizedBeanCreator<T> implements BeanCreator<T>{
Run Code Online (Sandbox Code Playgroud)

喜欢的东西

public static class CustomizedBeanCreator implements BeanCreator<CustomizedBean> {

    @Override
    public CustomizedBean createBean() {
        CustomizedBean bean = new CustomizedBean();
        bean.setId(-2323);
        bean.setName("this bean is created by a customized creator");
        return bean;
    }

    @Override
    public Class<CustomizedBean> getClazz() {
        return CustomizedBean.class;
    }
}
Run Code Online (Sandbox Code Playgroud)