Java泛型getKeyByValue方法冗余类型参数可正常运行原因问询
问题解答
两种声明均可正常运行的原因
两个方法的核心逻辑、用到的有效泛型参数完全一致:只有Map<String, E>入参,两者编译后的执行逻辑没有任何区别,所以都可以正常运行。
第一种方法里多声明的
未使用的不会引发编译报错的原因
Java语言规范并没有强制要求泛型方法声明的所有类型参数必须被实际使用,冗余的类型参数只会触发编译器的未使用警告(开启对应检查规则的前提下),不属于语法错误,所以不会阻断编译。
这种情况和你在方法里声明了一个从未读写的局部变量是一样的逻辑:Java不禁止无意义的冗余声明,仅会给出优化提示。
小提示:实际开发中应该删除这类冗余泛型参数,避免降低代码可读性。
内容的提问来源于stack exchange,提问作者user6743474
相关产品推荐
相关产品推荐

