首页 > 解决方案 > Java 接口继承自其他两个接口 - 是否可以通过使用 Java 反射删除有关其中一个接口的信息?

问题描述

我有这个特定的要求,因为第三方库以某种方式具有 this interface Awhich extends B,which 反过来extends C, D

现在,问题是interface C extends D. IMO,因为C已经扩展DB应该只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 的类之前,以某种方式通过使用 Java 反射,删除数组 ( interface D) 的第二个元素(如果可能的话) 。Binder

标签: javareflectionvaadin-flow

解决方案


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


推荐阅读