
1 wolfie 2021-10-28 15:25:20 +08:00 Java 不支持多继承 B 可以为 Interface |
2 77yf77yf77yf OP @wolfie 没说清楚不好意思,A 是一个抽象类,B 是一个接口,这样写上去 idea 会报错 |
3 hingbong 2021-10-28 15:53:32 +08:00 <T extends Object & Serializable> void a(Class<T> t) {} |
5 wolfie 2021-10-28 16:01:17 +08:00 |
6 77yf77yf77yf OP @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface CacheKey { Class<? extends AbstractStdCacheNaming & ICacheKeyNamingStrategy> keyGen() default EntityBasedKeyNamingStrategy.class; ... } public abstract class AbstractStdCacheNaming {...} public interface ICacheKeyNamingStrategy {...} Class<? extends AbstractStdCacheNaming & ICacheKeyNamingStrategy> keyGen() default EntityBasedKeyNamingStrategy.class; 这一句就报错了 @hingbong |
7 hingbong 2021-10-28 16:32:46 +08:00 注解上不行 @interface members may not have type parameters 非注解可以 public interface CacheKey { <T extends Object & Comparable<? super T>> Class<T> keyGen(); } |
8 hingbong 2021-10-28 16:33:20 +08:00 |
9 77yf77yf77yf OP @hingbong 那对于注解有什么替代方案吗,不然只能用反射检查? |
10 hingbong 2021-10-28 17:03:57 +08:00 我是写 kotlin 的 试了一下 kotlin 可以,但是那个注解到 Java 下又无法使用,只能在 kotlin 里用,Java 里我就不清楚了 |
11 77yf77yf77yf OP @hingbong 好的,谢谢了 |