我正在尝试解决问题,我想出了这个解决方案(简化):
package help;
public class Problem {
private static class A<T> {
public void foo(T t) {}
}
private static class B<T> {}
private static class C<T> extends A<B<T>> {
public void foo(T t) {}
}
}
Run Code Online (Sandbox Code Playgroud)
它不会编译,因为help.Problem.C中的"foo(T)与help.Problem.A中的foo(T)冲突;两种方法都有相同的擦除,但都没有覆盖其他方法".
我不只是想解决问题,我也想了解发生了什么.我注意到如果省略B类,则错误消失了.
另外:你能提供一段代码的例子,编译器无法将变量绑定到这两个方法中的一个吗?
我有一个基于熔丝的文件系统,为了改进它我需要实现这种方法 https://lwn.net/Articles/674286/
我明白我应该git apply < patch >,问题是我不明白应该应用这个补丁的确切位置?
补丁试图修改几个文件,例如:
a/fs/fuse/Makefile
a/fs/fuse/dev.c
b/fs/fuse/dev.c
a/fs/fuse/dir.c
b/fs/fuse/dir.c
etc..
Run Code Online (Sandbox Code Playgroud)
这是我用locate命令找不到的,也尝试丢失'a'和'b'前缀并找到了makefile.