我有一个带有此签名的方法:
protected final Map<String, Object> buildOutputMappings(
AbstractDataObject ado, MDBase md)
并使用此方法(在子类中)调用:
Map<String, Object> params = buildOutputMappings(ra, md);
我收到此编译器警告:
Warning:Warning:line (136)[unchecked] unchecked conversion
found : java.util.Map
required: java.util.Map<java.lang.String,java.lang.Object>
将参数更改为未生成的Map会删除编译器警告。为什么会这样以及如何避免(除了抑制)?
编辑:这是JDK 1.5,第136行是上面的赋值语句。
这两个类都不是参数化的
,它们仅具有返回通用类型的Map的方法。方法中返回的对象也被泛化。
编辑:超类确实是泛型的,尽管返回值与这些泛型无关。这是该方法的代码,尽管有免责声明,我没有写这个,但我知道它很丑陋:
protected final Map<String, Object> buildOutputMappings(AbstractDataObject ado, MDBase md) throws DAOException {
try {
....
Map<String,Object> params = new HashMap<String, Object>(spc.getNumberInParams());
....
return params;
}
catch (Exception e) {
logger.undeterminedError(e);
throw new DAOException(e.getMessage(), e);
}
}
这是类的声明:
public abstract class DAOBase<T extends AbstractDataObject>
public class RoleAssignmentDAO extends DAOBase
我的猜测是您没有在子类中正确使用泛型,并且编译器正在禁用该类的泛型。因此,buildOutputMappings调用的返回类型将转换为原始类型,并生成警告。父类被参数化了吗?子类是否包括父类参数的类型?
简而言之,您的错误很可能是在子类或父类中某个位置删除了类型参数。
我正在尝试为创建一个通用行映射器。 因此,我的初始片段如下所示: 但是在构造函数中,getComponentType()返回null,因此clazz=null 我无法取得任何进展。 我做错了什么? 谢谢
我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!
Java在Map接口中提供了通用支持。 语法 (Syntax) Set<T> set = new HashSet<T>(); 哪里 set - Set Interface的对象。 T - 在set声明期间传递的泛型类型参数。 描述 (Description) T是传递给通用接口Set及其实现类HashSet的类型参数。 例子 (Example) 使用您选择的任何编辑器创建以下Java程序。 pa
我对构建哈夫曼编码原型感兴趣。为此,我想首先生成一个组成输入Java字符串的字符直方图。我在SO和其他地方看到了许多解决方案(例如:这里依赖于使用流的方法以及函数的静态导入。identity()和收集器。以非常具体和直观的方式计数()。 但是,当使用与我上面链接的代码非常相似的一段代码时: 我从Intellij收到一个编译时错误,它告诉我没有符合供应商类型的参数来收集,这是其签名所要求的: 不幸的
怎么做?没有找到可以基于类型动态映射的示例。我发现这种方法在、Google中都非常方便。感谢你的帮助!
我想询问一个人,并得到以下回应: 但在需要时,我还想包含字段,并获得如下内容: 但是,我得到的只是手机ID,就像这样: 这是两个有问题的领域: