java - 是否可以在返回之前转换返回值?
问题描述
我听说过泛型,但我找不到让它返回已经转换的值的方法。例如:
public <T> T getController(SceneEnum sceneEnum) {
if (sceneData.get(sceneEnum) == null) {
initScene(sceneEnum);
}
return sceneData.get(sceneEnum).getLoader().getController();
}
此方法返回不同的类,例如 MainScreenControler、PopupController 等,但我无法从返回的类中调用方法,而不进行强制转换。
- 作品: ((MainScreenController)getController(MainScreenEnum)).someMethod();
- 不起作用:getController(MainScreenEnum).someMethod();
那么有什么方法可以在 getter 中执行强制转换吗?
解决方案
尝试明确指定泛型
this.<MainScreenController>getController(MainScreenEnum).someMethod();
在包含getController
或的类内
instance.<MainScreenController>getController(MainScreenEnum).someMethod();
在不同的类中(instance
是包含 的类的实例getController
)。
不幸的是,这几乎不比
((MainScreenController) getController(MainScreenEnum)).someMethod();
您不能在 getter 中“强制转换”,因为T
它是在调用站点中决定的,而不是在定义站点中决定的。
推荐阅读
- java - 带有arm处理器的debian linux上的android-sdk
- javascript - 为什么带有 src="../node_modules/angular/angular.js" 的脚本标签不起作用?
- windows - 如何使用 CreateFile("\\\\.\\LCD") 打开所有连接的 LCD 显示器的句柄?
- android - 通过片段打开地图时出现问题
- reactjs - 如何在托管站点上自动运行 React 应用程序和 Express 服务器
- regex - 如何删除包含 csv 数据的 RDD 中包含空值的条目?
- javascript - 如何将列表项的名称传递给另一个组件?
- c# - 如何在没有 ViewBag 的情况下将值从 Controller 传递到 _Layout 并进一步传递到 PartialView?
- embedded-linux - 在 Debian 9.5 内核 4.14-ti 上为 BeagleBone Black 启用设备树覆盖
- reactjs - 与 GraphQL 客户端反应