【问题标题】:Why can't @SafeVarags be applied to instance methods in a final class?为什么@SafeVarags 不能应用于最终类中的实例方法?
【发布时间】:2014-11-30 00:03:41
【问题描述】:

根据documentation of SafeVarargs@SafeVarargs 注释只能应用于staticfinal 的构造函数或变量arity 方法。这是I have read,用于消除注释继承问题;也就是说,只有在方法不能被覆盖的情况下才允许对方法进行注释。显然,构造函数、static 方法和final 方法不能被覆盖。但是,private 方法或 final class 中的方法也不能。 Someone has complained 关于无法指定 @SafeVarargs private 方法,但 neither of these issues has been addressed。一般来说,no one really seems to care。我错过了什么吗?我在抱怨没有任何实际应用的东西吗?还是……?

【问题讨论】:

  • 嗯,如果在方法中使用可变参数是安全的,我倾向于使用 SuppressWarnings 注释来使编译器停止抱怨。但我不确定为什么不能在有效的最终方法上使用此注释。
  • @jjm 如果我没记错的话,在 varargs 方法上使用 @SuppressWarnings("unchecked") 会抑制该位置的警告,但在使用该方法的地方仍然会出现警告。因此,@SafeVarargs存在理由

标签: java annotations overriding variadic-functions type-erasure


【解决方案1】:

这计划在 Java 9 中修复;见http://openjdk.java.net/jeps/213

【讨论】:

  • 我实际上是从我的问题中链接到这里的,但不确定这是一个不重要的提议(可以忽略)还是很有可能通过的事情。我还注意到它(奇怪地)没有提到final 类中的方法。您认为除了简单的疏忽之外还有其他原因吗?
  • 是的,它计划包含在 JDK9 中。
猜你喜欢
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多