它可以改进这个Java Generics场景

时间:2017-09-08 14:03:04

标签: java generics

我有这个场景......

public enum ParametrosAplicacion{
    BOOLEAN("BOOLEANO", "Valor verdadero o falso", Boolean.class, false),
    FILE("PROPIEDAD", "DESCRIPCION", File.class, new File("ruta"));
    private final String propiedad, descripcion;
    private final Class<?> clase;
    private Object valor;
    private ParametrosAplicacion(String p, String d, Class<?> c, Object v){
        this.propiedad=p;
        this.descripcion=d;
        this.clase=c;
        this.valor=v;
    }
    public Class<?> getClase(){
        return this.clase;
    }
    public <V> V getValor(Class<V> clase){
        return clase.cast(valor);
    }
    public static void main(String[] args){
        Boolean sw=ParametrosAplicacion.BOOLEAN.getValor(Boolean.class);
        if(sw){
            System.out.println(sw.getClass().getSimpleName());
        }else{
            File file=ParametrosAplicacion.FILE.getValor(File.class);
            System.out.println(file.getClass().getSimpleName());
        }
    }
}

我找到某种方式以这种方式获得价值......

Boolean sw=ParametrosAplicacion.BOOLEAN.getValor();

有点像......

public <V> V getValor(){
    return this.clase.cast(this.valor); // not compile!!!
}

当然我需要跳过任何未经检查的警告,所以......

public <V> V getValor(){
    return (V)(valor);
}

不是一个好的解决方案......

非常感谢...

0 个答案:

没有答案