gpt4 book ai didi

Java 类型删除和多重边界

转载 作者:行者123 更新时间:2023-12-01 12:13:45 26 4
gpt4 key购买 nike

我知道在 Java 泛型中,当使用具有多个边界的类型参数时,编译器会将类型信息删除到“最左边的边界”(即列表中的第一个类/枚举或接口(interface))。
那么为什么下面的代码编译没有问题呢?

public class Generic<T extends Object & Appendable & AutoCloseable> {

T t;

T method() throws Exception {
t.close();
char c='\u0000';
t.append(c);
return t;
}

public <T> T method2(T t) {
return t;
}

}

类型参数 T 不应该被视为 Object 吗? (因此不允许我调用 close() 或 append())??

最佳答案

你应该阅读 桥接方法 here

When compiling a class or interface that extends a parameterized class or implements a parameterized interface, the compiler may need to create a synthetic method, called a bridge method, as part of the type erasure process. You normally don't need to worry about bridge methods, but you might be puzzled if one appears in a stack trace.

关于Java 类型删除和多重边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34471109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com