java - 实现接口并使用类对象而不是接口对象
问题描述
我有接口TestInterface
和类TestClass
。
TestClass
现在实现了这个接口。但是,我想将一个TestClass
对象作为方法的参数传递。
但是,这里向我显示了一个错误。
这是为什么?
我想我可以在可以使用接口对象的任何地方使用实现接口的对象。
如何更改程序?
public interface TestInterface {
int v=0;
public void method(TestInterface t);
}
public class TestClass implements TestInterface{
int v = 5;
public void method(TestClass t) {
v=10;
}
}
解决方案
您不能这样做,因为这违反了接口的约定:该方法应该接受 的任何实现TestInterface
,而不是具体的TestClass
. 相反,您可以在接口中使用类型参数来限制参数类型。
public interface TestInterface<T extends TestInterface<T>> {
int v=0;
public void method(T t);
}
public class TestClass implements TestInterface<TestClass>{
int v = 5;
public void method(TestClass t) {
v=10;
}
}
推荐阅读
- r - 在R中平凡地加入两列
- javascript - Adobe 中的可填写 PDF:用于跨多个连接字段的退格的 Javascript 代码?
- r - 由于先前在编译 R 时出现错误,Rstudio 无法启动“无法确定 R 脚本的真实路径”
- statuspage-api - {"error":"incident is missing"} 使用 PATCH 或 PUT 更新事件时
- powershell - Powershell - 如果满足条件,则替换 .txt 中的行
- scala - akka.http.scaladsl.model.ParsingException:使用 akka http 将大文件上传到 S3 时,多部分实体意外结束
- ios - 使用 CocoaPods 和 SwiftPM 实现的 FBLPromise 崩溃
- vba - 如何在多列表框中正确添加项目?
- java - Java 扩展 Java 类并覆盖它们的方法
- json - 在反应测验应用程序中增加分数(多变量分数)