gpt4 book ai didi

java - 在接口(interface)中使用泛型方法没有意义吗?

转载 作者:行者123 更新时间:2023-12-02 06:21:18 25 4
gpt4 key购买 nike

我正在编写一段函数式编程代码。我有一个接口(interface)和一个类,该类具有一个函数,该函数将该接口(interface)的实现作为参数获取。

  public interface Statement
{
T executeTStatement();
}

public class StatementExecutor
{

public static<T> T executeStatement(Statement statement)
{
T result;
try
{
.
.
result = statement.executeStatement();
.
.
}
catch.....
finally....

return result;

}
}

因此,StatementExecutor 类和类中的executeStatment 函数都可以,因为executeStament 是用static 声明的,不需要在类中声明。但是由于 static 是接口(interface)方法的非法修饰符,因此不能在接口(interface)中执行相同的操作,我只能添加到接口(interface)声明中,并且我想避免它,因为该接口(interface)中只有一个泛型方法。所以问题是,如果我遇到这种情况,我的设计有问题,还是只是 java 的限制?是否有一些技巧可以在接口(interface)中声明泛型方法而不在接口(interface)级别声明它?

最佳答案

您可以在界面中声明通用方法,如下所示:

public interface Statement
{
<T> T executeTStatement();
}

但是这样就没有多大意义了——你有一个返回“某物”的方法,但是“某物”什么时候会被定义呢?因此 T 必须以某种方式绑定(bind)才能发挥作用:

  • 在接口(interface)级别声明它,并且在定义引用时必须绑定(bind) T(但您不想这样做)
  • 从方法的某个参数推导出类型 T:

    public interface Statement
    {
    <T> T executeTStatement(T argument);
    }

关于java - 在接口(interface)中使用泛型方法没有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20989740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com