在比较Java泛型时,如何避免字符串硬编码?

在比较Java泛型时,如何避免字符串硬编码?,java,android,generics,comparison,Java,Android,Generics,Comparison,有没有更好的方法可以将类型与java泛型进行比较,而不是硬编码字符串 在这个方法中,我想用硬编码字符串交换对类的引用: @Override public Object fromBody(TypedInput body, Type type) throws ConversionException { if (!type.toString().equals("com.package.app.LstMdl<com.package.app.AdMdl>"))

有没有更好的方法可以将
类型
与java泛型进行比较,而不是硬编码
字符串

在这个方法中,我想用硬编码字符串交换对类的引用:

    @Override
    public Object fromBody(TypedInput body, Type type) throws ConversionException {
        if (!type.toString().equals("com.package.app.LstMdl<com.package.app.AdMdl>")) { //I would like not to use this String
            //do sth
        }
        return super.fromBody(body, type);
    }
但它不起作用。第一种解决方案很好,但有没有更优雅的方法呢?

试试这个:

if (!(type.equals(LstMdl.class) && ((ParameterizedType)type).getActualTypeArguments()[0].equals(AdMdl.class))) {

我们可以尝试从类中构建字符串,如下所示:

String expectedTypeStr = String.format("%s<%s>", LstMdl.class.getName(), AdMdl.class.getName());
if (!type.toString().equals(expectedTypeStr)) {
String expectedTypeStr=String.format(“%s”、LstMdl.class.getName()、AdMdl.class.getName());
如果(!type.toString().equals(expectedTypeStr)){

不应该
type.equals(LstMdl.class)
应该
type.getClass().equals(LstMdl.class)
@funkthemank工作不正常:/
String expectedTypeStr = String.format("%s<%s>", LstMdl.class.getName(), AdMdl.class.getName());
if (!type.toString().equals(expectedTypeStr)) {