package org.example.testContructorNew;
public class Main {
public static void main(String[] args) {
// 这会报错:class java.lang.Float cannot be cast to class java.lang.Integer
// int ret = f();
// 方法1:
float ret = f();
System.out.println(ret);
// 方法2: 有时需要f返回值传参,因此可以用Number
Number ret = f();
System.out.println(ret.floatValue());
// 方法3:当然还可以继续用Object,然后转换
Object ret = f();
System.out.println((float)ret);
}
@SuppressWarnings("unchecked")
public static <T> T f() {
Object v = 1.0f;
return (T) v;
}
}
总结:你必须明确知道你使用的类型,比如:f返回了int,但是你用的是float接收返回值,则报错。对于数字类型的,Number,intValue()之类的则可以。