java - 如何在具有不同类名的接口中定义抽象方法?
问题描述
通过在接口中定义抽象方法,我非常挣扎。为什么?在每个类中,必须实现与该接口相关的一个名为“getInstance”的方法。这些方法返回实际使用的实例。那么如何在不同类的接口中定义抽象方法呢?
public interface MyInterface {
public <<here is my question>> getInstance();
}
public class Class1() implements MyInterface {
public Class1 getInstance() {
return this;
}
}
public class Class2() implements MyInterface {
public Class2 getInstance() {
return this;
}
}
解决方案
请参阅我的评论,您似乎不太可能真的想这样做。
您可以执行Khan Saab 指出的操作: HavegetInstance
的返回类型是MyInterface
。但是,如果您需要访问界面的功能Class1
或Class2
不属于界面的一部分,那将不起作用。
你可以用泛型做这样的事情:
public interface MyInterface<T> {
public T getInstance();
}
public class Class1 implements MyInterface<Class1> {
public Class1 getInstance() {
return this;
}
}
public class Class2 implements MyInterface<Class2> {
public Class2 getInstance() {
return this;
}
}
但是你不能(例如)有一个数组并在其中MyInterface
使用和混合(没有和强制转换)。Class1
Class2
instanceof
所有这些都可能意味着您想做其他事情。
推荐阅读
- angular - 如何在启用 IVY 的情况下调试 Angular 9 编译错误?
- python - 同名的类和函数
- kotlin - 如何在 Kotlin 伴随对象中设置线程安全的全局变量?
- ssas - Analysis Services 多维数据集层次结构总计
- regex - 无数的常规语言
- ios - 照片库无法访问,只有相机选项可用 swift 代码
- r - ifelse 函数可以访问其内部计算的值吗?
- amazon-web-services - 如何在失败时转储 aws lambda 有效负载
- ios - withTimeout 函数给出 IllegalStateException: 没有事件循环。使用 runBlocking { ... } 启动一个。在 Kotlin 多平台 iOS 客户端中
- node.js - 无法分离 AWS KMS 客户端节点示例中的加密和解密逻辑