有没有人理解为什么以下代码在Java 7及更低版本中可以正常编译,但是在Java 8中失败了.
public static void main(String[] args) throws Exception {
put(get("hello"));
}
public static <R> R get(String d) {
return (R)d;
}
public static void put(Object o) {
System.err.println("Object " + o);
}
public static void put(CharSequence c) {
System.err.println("CharSequence " + c);
}
public static void put(char[] c) {
System.err.println("char[] " + c);
}
Run Code Online (Sandbox Code Playgroud)
get方法具有泛型返回类型.在JDK 7及更低版本中,这将编译精细,并选择带有Object参数的put方法.在JDK 8中,这无法编译,表明put方法不明确.
显然JDK 8正在跳过Object-parameter方法并找到最后两个子Object-parameter方法并抱怨它们(即如果你添加另一个put方法和其他一些参数类型,编译器将切换并抱怨新的last两种方法)
这似乎是一个错误.
如果您是站点管理员,是否可以在GitHub企业中任意添加用户到组织.我正在评估该软件,但似乎无法可靠地做到这一点.不属于组织的站点管理员无法启动组织仪表板,也无法查看哪些用户是其中的一部分,尽管他们可以查看和贡献存储库(以一种方式).我知道可以冒充非管理员用户,但你必须知道谁已经是该组织的一部分来执行此操作,这是隐藏的.必须有一个更好的方法,因为如果有一些邪恶的员工,除了自己以外的所有人.该组织实际上将成为孤儿.
谢谢