有没有更好的方法可以将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);
}
但它不起作用。第一个解决方案工作正常,但有没有办法让这更优雅?
答案 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)) {