当前位置 : 主页 > 网络编程 > 其它编程 >

编译类型不匹配

来源:互联网 收集:自由互联 发布时间:2023-07-02
我有一个使用此接口的方法:publicMessageConvertergetDefaultConvert 我有一个使用此接口的方法: public MessageConverter getDefaultConverterFor(Class inputClass, Class outputClass); 这里的想法是您有一个要转换
我有一个使用此接口的方法:publicMessageConvertergetDefaultConvert

我有一个使用此接口的方法:

public MessageConverter getDefaultConverterFor(Class inputClass, Class outputClass);

这里的想法是您有一个要转换为B型消息的类型为A的消息,并且想要从可用的已注册转换器的存储库中获取一个转换器来执行此操作.不幸的是,我很难按预期的那样使两端的类型都能正常工作.

更具体地说,我正在尝试这样做:

public Message convert(M m){ MessageConverter cOnverter= getDefaultConverterFor(m.getClass(), DictMessage.class); return converter.convert(m); }

(即获取任何类型的消息并将其转换为DictMessage),但是在getDefaultConverter行上却给了我一个编译错误:

Type mismatch: cannot convert from MessageConverter to MessageConverter".

我什至不知道为什么会这样,更不用说如何解决了.我以为这与getClass返回的类与M不太匹配有关,但我真的不知道.我可以相信这可能实际上是行不通的,但是我想不出任何打破它的特定示例……有什么想法吗?

解决方法:

我在Object.getClass()返回Class时遇到问题一段时间.编译器不知道m.getClass()是Class.但您可以通过强制转换解决此问题.

@SuppressWarnings("unchecked")MessageConverter cOnverter= getDefaultConverterFor((Class) m.getClass(), DictMessage.class);【转自:响水网站建设 http://www.1234xp.com/xiangshui.html 复制请保留原URL】

网友评论