FasterXML / FasterXML/java-classmate
Unintuitive information about member methods wrt return type covariance
- 主要言語
- Java
- スター
- 266
- フォーク
- 47
- 平均マージ
- 1時間 42分
- マージ済み PR(30日)
- 1
説明
I've recently come across a surprising behaviour regarding `MemberResolver`'s `getMemberMethods`. Consider the following classes:
```java
interface Foo {}
class Bar implements Foo {}
interface A {
Foo doSomething();
}
class B {
public Bar doSomething() {
return null;
}
}
class C extends B implements A {}
```
Notice that `C` implements `A.doSomething()` through `B.doSomething()`.
When inspecting the members of C like this:
```java
var typeResolver = new TypeResolver();
var methods = new MemberResolver(typeResolver).resolve(typeResolver.resolve(C.class), null, null).getMemberMethods();
```
`methods` will contain a single method - `public abstract Foo A.doSomething()`. However, this doesn't tell the whole story - notice that `B.doSomething` actually returns a `Bar` instead of a `Foo`. Therefore, in this case I'd expect `methods` to contain `public Bar B.doSomething()`, which gives me more information than `A.doSomething()` does.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。