java - 具有多个边界的成员类型

标签 java generics

所以我才知道我可以

public <T extends SomeClass & SomeInterface<OtherClass>> doSomething(T foo);

在 Java 中表示 foo延伸SomeClass并且还实现了 SomeInterface<OtherClass> .到目前为止,还不错。

但是我将如何分配 foodoSomething()到成员变量?该类当然不知道附加到 doSomething() 的类型定义的任何内容。方法。

我需要它的上下文是一个 POJO,它的构造函数需要用 T 来论证这需要返回所述 T再次。

我最接近的是:

public class ThisClass implements AnotherInterface<AnotherClass> {

    private final Object obj;

    public <U extends SomeClass & SomeInterface<AnotherClass>> ThisClass(U obj) {
        this.obj = obj;
    }

    public <U extends SomeClass & SomeInterface<AnotherClass>> U getObject() {
        return (U) obj;
    }
}

但如果没有未经检查的转换,我无法绕过头来获得解决方案。

最佳答案

你不能让类通用:

public class ThisClass<U extends SomeClass & SomeInterface<AnotherClass>>
                                   implements AnotherInterface<AnotherClass> {

    private final U obj;

    public ThisClass(U obj) {
        this.obj = obj;
    }

    public U getObject() {
        return obj;
    }
}

并像这样使用它:

ThisClass<String> instance = new ThisClass<>("Foo");
String value = instance.getObject();

关于java - 具有多个边界的成员类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092553/

相关文章:

.net - List<T> 如何在内部映射?

xaml - 带有类型参数的页面

objective-c - 有没有办法在 NSArray 的类别中使用 ObjectType?

java - 使用 JAXB 解码 XML 时跳过 XML 节点

java - IDEA 中的 Maven 错误 :Maven project configuration required for module 'quickStart' isn't available

java - 返回基于 String 的 switch capable 值

java - 在方法中使用泛型类类型

java - 使用 Play Framework 上的按钮更改语言

java - 使用 Jackson 将 Json 文件映射到 POJO 需要 @JsonProperty

c# - 发送列表时的 '`'字符和RestSharp请求体