【问题标题】:How implement an interface Generic Method如何实现接口通用方法
【发布时间】:2015-04-15 12:38:20
【问题描述】:

如何实现,例如,non-generic-interface 和 generic method 的 String 类型?

界面如下:

// non-generic-class
interface I{

    public <T> T doI(T t);

}

【问题讨论】:

  • 与接口中定义方法的方式相同,只是方法体。
  • 嗯,您返回的类型与提供的参数相同。您可以通过引用修改对象并使 doI 无效???
  • 好问题,我不知道。
  • Java 使用引用和值两种模式。您可以在您的界面中使用它。 HttpServlet.doGet 是一个很好的例子,它是无效的,客户端通过引用修改对象
  • 为什么 和 T 是方法的返回类型?我知道编译器对此没有任何问题,但试图想象它的要求。您能否简要解释一下需要实现的目标。顺便问下好问题。

标签: java generics interface


【解决方案1】:

这个接口中所有的&lt;T&gt;的意思是传递给方法的类型T和方法返回的类型T是一样的。

实现需要使用一些符号 T,就好像它是一个类一样

public <T> T doI(T t){
    Object a = t.getClass().newInstance();
    return (T) a;
}

然后你可以用类似的东西来调用它

I obj = getIImplementer ();
String a = obj.doI ("ssssssss");

并且编译器知道它可以从传递的对象类型推断返回类型。

如果你想实现一个特定的版本,你需要把泛型参数放在接口上而不是方法上,这样你就可以输入实现类,从而输入方法参数。

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 2013-08-25
    • 2018-06-28
    • 2022-08-04
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多