标签:enums types generics type-conversion java
我想创建一个将从枚举返回四种类型之一的方法.因此,如果有人想要SCAN_RANK_GROUPS的过滤器,我如何才能将方法的返回类型设为Rank,或者如果有人想要SCAN_MEMBERS,它将返回Member.我该怎么做呢?
public <T> T scanTemporaryStorage(ScanFilters filter) {
return (T) filter.performOperation();
}
public enum ScanFilters {
SCAN_RANK_GROUPS {
@Override
public <Rank> Rank performOperation() {
}
},
SCAN_MEMBERS {
@Override
public <Member> Member performOperation() {
}
};
public abstract <T> T performOperation();
}
解决方法:
这不可能做到.我的建议是为Rank和Member创建一个超类Scannable,并使用它:
public Scannable scanTemporaryStorage(ScanFilters filter) {
return filter.performOperation();
}
public enum ScanFilters {
SCAN_RANK_GROUPS {
@Override
public Scannable performOperation() {
}
},
SCAN_MEMBERS {
@Override
public Scannable performOperation() {
}
};
public abstract Scannable performOperation();
}
父类Scannable将具有所有共享方法:
public abstract class Scannable {
// have all the methods in Rank and Member
}
并让您的课程扩展它.
public class Rank extends Scannable
public class Member extends Scannable
标签:enums,types,generics,type-conversion,java 来源: https://codeday.me/bug/20191029/1960438.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。