首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java泛型和运算符

Java泛型和运算符
EN

Stack Overflow用户
提问于 2018-06-15 07:18:26
回答 1查看 246关注 0票数 0

我在理解java泛型中的表达式时遇到了一些困难。请在这方面提供帮助:

代码语言:javascript
复制
public interface Inter {
    <T extends Enum<T> & FunctionalInterface> String getString();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-15 08:00:37

您提供的代码是合法的,但无用。

它无用的原因有两个:

  1. 您已经定义了泛型类型T,作为方法声明的一部分,该方法声明必须实现Enum<T>接口和FunctionalInterface接口。但是,您在方法的签名(即参数或返回类型)中的任何位置都没有使用该类型,因此它实际上被忽略了。
  2. 有一个接口实现'FunctionalInterface‘是可能的,但肯定不是它的预期用途。它被设计为接口的注释,而不是接口本身。

你可以让这个组合起作用:

代码语言:javascript
复制
public interface Inter {
    <T extends Enum<T> & FunctionalInterface> String getString(T value);
}

static class InterImpl implements Inter {
    @Override
    public <T extends Enum<T> & FunctionalInterface> String getString(T value) {
        return value.name();
    }
}

enum EnumImpl implements FunctionalInterface {
    A, B, C;

    @Override
    public Class<? extends Annotation> annotationType() {
        return null;
    }
}

public static void main(String[] args) {
    InterImpl impl = new InterImpl();
    System.out.println(impl.getString(EnumImpl.B));
}

您将看到EnumImpl枚举实现了EnumFunctionalInterface,因此可以将其用作getString的参数。

这是一种解释,但坦率地说,我想不出这样一段代码有什么有用的用例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50867189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档