Java:将对象引用动态转换为引用的类?



是否可以使用其他变量施放变量,而不是使用类的名称?

这是功能代码:

Object five = new Integer(5);
int six = (Integer) five + 1;

我很想用

替换第二行
int six = five + 1;

但是我不能,所以我可以做类似这些选择之一的事情:

int six = (foo) five + 1;
int six = foo(five) + 1;
int six = foo.cast(five) + 1;

??

为什么我想这样做
我有一个带有自定义枚举的键的地图,以及类型字符串,整数,double等的值

我想在地图输入值上执行特定于类的操作,而无需硬编码演员类。

示例

enum keyEnum { height, color; }
public static void main(String[] args) {
    Map<keyEnum, Object> map= new HashMap();
    String value1 = "red";
    Double value2 = 3.2;
    map.put(keyEnum.color, value1);
    map.put(keyEnum.height, value2);
    double x = (Double) map.get(keyEnum.height) + 10.5;
}

我真的很想避免在最后一行中对(Double)进行硬编码。到目前为止尚未找到解决方案,只有可能是不可能的。

我正在为需要编写和读写大型CSV文件的程序使用此设置。我希望Java能够适当地施放变量,这样我就不必记住或编码每个列类型的类。

我有一个列表所有列标题的枚举,我用作存储列变量的地图的键。这是为了避免对每列的数组索引(row.split(","))进行硬编码,这是一场维护噩梦。我愿意接受更好的方法

您不使用Java,因为它的意图会很慢,不安全和丑陋。你应该做的是

class MyType { double height; String color; }
public static void main(String[] args) {
    MyType mt = new MyType();
    mt.color = "red";
    mt.height = 3.2;
    double x = mt.height;
    // to iterate over the fields
    for(Field field: MyType.class.getDeclaredFields()) {
        System.out.println(field.getName() + "= "+ field.get(mt));
    }
}

通过编译时间检查,使用更少的代码,它将使用更少的内存和CPU。

使用更少的代码。

将clasStype存储在变量中,并利用铸造方法。

Class<T> clscls.cast()

最新更新