如何解决Java接口继承自其他两个接口-是否可以通过使用Java反射来删除有关这些接口之一的信息?
我之所以有此特定要求,是因为第三方库以某种方式具有interface A
,其中extends B
,又是extends C,D
。
现在,问题是interface C extends D
。 IMO,由于C
已经扩展了D
,因此B
应该仅extends C
。
当我尝试使用interface A
类型的对象来绑定Vaadin Flow中的表单时,就会出现问题。错误消息是:Duplicate key found for property [this common method]
。
我检查了对象,发现存在以下层次结构:
// myObject:
// reflectionData:
// referent:
// interfaces:
// [0]:
// name: "com.example...." [interface B from above]
// reflectionData:
// referent:
// interfaces:
// [0]:
// name: "com.example..." [interface C from above]
// [1]:
// name: "com.example..." [interface D from above]
我的想法是,也许可以通过使用Java反射,在将对象发送到Vaadin的interface D
类之前,删除数组(Binder
)的第二个元素(如果可能的话)。
解决方法
您无法在Java中修改反射信息。但实际上,这是Vaadin中的错误,请提交错误报告。在Java中,具有相同名称(和参数)的接口方法不被认为是重复的-它是相同的方法。当Java编译器产生疑问时,它将发出错误。如果您的程序已经编译,则是正确的,并且Vaadin必须使用任何正确的程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。