我遇到了一个相当奇怪的行为,并且不确定这是Java问题还是Eclipse问题.
请使用以下代码:
class Foo {
private String text;
public void doStuff(Foo f) {
System.out.println(f.text);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,为什么f.text可以访问?这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是.
为什么像这样的方法需要显式转换返回类型?
public T Test<T> ()
where T : Response
{
var ret = new Response ();
return ret; // Explicit cast needed here
}
Run Code Online (Sandbox Code Playgroud)
该约束明确指出 T 是 Response 或其子代,因此返回类型多态性应该允许无需强制转换,或者我是这么认为的。
添加as T允许编译通过。