比较Java泛型时如何避免String硬编码?

时间:2015-05-28 11:50:00

标签: java android generics comparison

有没有更好的方法可以将Type与java通用其他硬编码String进行比较?

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

    @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);
    }

我试图换掉它:

        @Override
        public Object fromBody(TypedInput body, Type type) throws ConversionException {
            if (!(type.equals(LstMdl.class) && ((LstMdl)type).data.getClass().equals(AdMdl.class))) {
                //do sth
            }
            return super.fromBody(body, type);
        }

但它不起作用。第一个解决方案工作正常,但有没有办法让这更优雅?

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

我们可以尝试从这样的类中构建String:

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