相关疑难解决方法(0)

793
推荐指数
17
解决办法
30万
查看次数

不兼容的java泛型类

似乎我再次陷入java泛型.这是我有的:

几堂课:

class CoolIndex implements EntityIndex<CoolEntity>

class CoolEntity extends BaseEntity

枚举使用上面的类:

enum Entities {
    COOL_ENTITY {
        @Override
        public <E extends BaseEntity, I extends EntityIndex<E>> Class<I> getIndexCls() {
            return CoolIndex.class;
        }

        @Override
        public <E extends BaseEntity> Class<E> getEntityCls() {
            return CoolEntity.class;
        }
    }

    public abstract <E extends BaseEntity, I extends EntityIndex<E>> Class<I> getIndexCls();

    public abstract <E extends BaseEntity> Class<E> getEntityCls();    
}
Run Code Online (Sandbox Code Playgroud)

函数我需要使用getIndexCls()函数调用的结果调用:

static <E extends BaseEntity, I extends EntityIndex<E>> boolean isSomeIndexViewable(Class<I> cls)
Run Code Online (Sandbox Code Playgroud)

问题是编译器抱怨return CoolIndex.class;并且return CoolEntity.class;我不清楚为什么......当然我可以把它投入 …

java generics types

8
推荐指数
1
解决办法
94
查看次数

Enum常量在Java中实现通用接口

假设您有一个通用接口:

public interface MyInterface<T> {
    T doSomething();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能声明一个实现的枚举MyInterface<T>,但每个枚举常量为哪个实现它的不同值T?也就是说,鉴于此枚举:

public enum MyEnum {
    FOO,
    BAR,
    BAZ;
}
Run Code Online (Sandbox Code Playgroud)

我们可以更改它,以便FOO实现MyInterface<Integer>,BAR实现MyInterface<String>BAZ实现MyInterface<List<MyOtherType>>,并使它成为MyEnum整体实现MyInterface<?>?这样做是完全可行的,因此它可能是以类型安全的方式完成的.

java generics enums interface

7
推荐指数
1
解决办法
3788
查看次数

标签 统计

java ×3

generics ×2

design-patterns ×1

enums ×1

interface ×1

singleton ×1

types ×1