java - 如何将类数据类型作为参数传递并将其用于强制转换
问题描述
我该如何解决这个问题:
private <T> void myFunction(float value, Class<T> classType){
System.out.println("Value = + (classType) value);
}
Java Main(){
myFunction(3.214, Float.class);
myFunction(432.13, Integer.class);
}
我期待输出:
3.214
432
但现在,我得到了错误。不能classType
用于铸造。
解决方案
您只能将对象引用强制转换为其祖先类型之一。
例如,这里您的对象是Float
该类的一个实例。它的祖先是 Number 和 Object 类,以及接口Serializable
和Comparable
. 这些是您可以转换的唯一类型。
您不能将引用转换Float
为引用,Integer
因为Integer
它不是Float
,
您可以做的是传入一个函数,该函数使用您想要的任何机制将浮点数转换为您想要的任何类型。方法声明如下所示:
private static <T> void myFunction(float value, Function<Float, T> function){
System.out.println("Value = " + function.apply(value));
}
你可以像这样使用它,例如:
myFunction(123.456f, Float::intValue);
推荐阅读
- java - Android - 在 java 中对片段和 DrawerLayout 使用 onBackPressed
- r - 确定等尾可信区间
- javascript - 如何避免错误 - function-name(...) 不是测验中的函数?
- elasticsearch - 如何为此编写弹性搜索查询?
- angularjs - 如何多次显示同一个表单?
- flutter - 使用 onPressed 函数创建字符串
- java - 添加新对象时运行时覆盖列表元素
- javascript - 自定义鼠标光标出现模糊
- amazon-web-services - 为什么 VPC 终端节点不支持 Amazon RDS?
- flutter - 文本表单字段验证器错误消息未显示