Java接口继承了另外两个接口——是否可以通过使用Java反射来删除其中一个接口的信息



我有这个特定的要求,因为第三方库不知何故有这个interface Aextends Bextends 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]

我的想法是,在将对象发送到Vaadin的Binder类之前,通过使用Java反射,移除数组的第二个元素(interface D((如果可能的话(。

您不能在Java中修改反射信息。但事实上,这是Vaadin中的一个错误,请提交错误报告。在Java中,具有相同名称(和参数(的接口方法不被认为是重复的——它是相同的方法。当java编译器怀疑时,它会发出一个错误。如果您的程序已经编译,那么它是正确的,Vaadin必须使用任何正确的程序。

最新更新