java - 有没有办法在 Java 中将布尔类型赋予泛型?
问题描述
我有一个如下代码块:
public Interface ISupClass{
void call();
void call1();
...
}
public class NormalClass implements ISupClass{
void call(){
....operations...
}
void call1(){
....operations...
}
...
}
public class DailyClass implements ISupClass{
void call(){
....operations...
}
void call1(){
....operations...
}
...
}
然后我像这样从主要服务中调用它们;
实例:
private INormalClass dailyClass = new DailyClass();
private INormalClass normalClass = new NormalClass();
方法:
public void call(int type, boolean isDaily){
if(type == 0) {
if(isDaily){
dailyClass.call();
}
else{
normalClass.call();
}
}
if(type == 1) {
if(isDaily){
dailyClass.call1();
}
else{
normalClass.call1();
}
}
...
}
有没有办法摆脱 isDaily 签入上面的代码块?或者我怎样才能有效地实施它?我刚刚尝试使用 Java 泛型实现,但这看起来不可能?
我知道这看起来与 polimorfizm 有关。但我想知道有人会这样想;
public Interface ISupClass<E>
call(E type)
...
public class NormalClass implements ISupClass<Boolen.FALSE>
...
public class DailyClass implements ISupClass<Boolen.TRUE>
...
public void call(int type, boolean isDaily){
supClass.call(isDaily);
解决方案
(如果我明白问题是什么)
这就是使用接口的重点。只需执行以下操作:
public class Example {
public static interface ISupClass {
void doSomething();
}
public static class NormalClass implements ISupClass {
@Override
public void doSomething() {
System.out.println("I am a normal class.");
}
}
public static class DailyClass implements ISupClass {
@Override
public void doSomething() {
System.out.println("I am a daily class.");
}
}
public static void doSomething(ISupClass clazz) {
clazz.doSomething();
}
public static void main(String[] args) {
doSomething(new DailyClass());
doSomething(new NormalClass());
}
}
因此,在您的情况下,不是通过,而是在方法中boolean isDaily
传递参数。ISupClass
call
public void call(int type, ISupClass caller) {
caller.call();
}
现在,泛型是一个完全不同的故事,我无法看到它与问题的关系。
推荐阅读
- ios - 如何在 Storyboard 中设置 UI 元素的委托?
- javascript - HTML5 视频:未捕获的类型错误:无法读取未定义的属性“0”
- java - 给定 BinaryTree 创建递归方法
- wso2 - API Manager 和 Intergration Server 之间有什么区别?
- php - 如何修复PHP说框是空的
- python - 在 PyTorch 中将值从一个张量复制到另一个张量的最快方法是什么?
- c# - 哪些端口在运行时使用统一?
- javascript - 我需要帮助了解为什么我的 javascript 代码在一种情况下与另一种情况下不起作用
- jquery - Bootstrap Modal 在 chrome 和 chrome 检查器 DevTools 中显示,但在真实的 Iphone 上不会切换或显示
- python - OpenCV 调整大小失败