【问题标题】:Calling static members from the super class of a generalizated attribute in Java从 Java 中的泛化属性的超类调用静态成员
【发布时间】:2013-05-25 21:52:50
【问题描述】:

我必须承认,Java 在使用模板时有点混乱......

正如标题所解释的,我正在尝试使用在某个通用属性的超类上编码的静态成员。我该怎么做?

例如:

class A {
    public static void someAction();
}

class B<T extends A>{ (...) }

¿我如何访问 B 类中 A 的 someAction() 方法?

【问题讨论】:

  • 你可以试试 A.someAction() 。
  • 对了,非常感谢……现在我很惭愧,答案太明显了

标签: java oop templates static


【解决方案1】:

如何从 B 类访问 A 的 someAction() 方法?

只要打电话

A.someAction()

这是一个静态方法,所以 B 的类型参数扩展 A 的事实没有任何影响。


如果someAction 应该是泛型的,并且您想将B 的&lt;T&gt; 参数与A 一起使用,则使用自己的类型参数声明someAction

public static <T> void someAction(.../* use T here maybe */) { ... }

然后你可以从B

A.<T>someAction(...)

这样someAction 之前的&lt;T&gt;B 正文中可见的&lt;T extends A&gt; 相同。

【讨论】:

  • @Bengalaa,看看Collections.emptySet。这是一个带有类型参数&lt;T&gt; 和返回值Set&lt;T&gt; 的静态方法。如果你打电话给Collections.emptySet(),你会得到一个总是空的Set&lt;Object&gt;,但如果你打电话给Collections.&lt;String&gt;emptySet(),你会得到一个总是空的Set&lt;String&gt;
猜你喜欢
  • 2014-07-28
  • 1970-01-01
  • 2018-05-31
  • 2012-11-15
  • 1970-01-01
  • 2019-08-11
  • 2018-01-02
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多