如何变换:cut(Orange.class) - >切(橙色)

时间:2018-02-01 12:00:08

标签: java

如何变换:cut(Orange.class) - >切(橙色)

剪切功能如下图所示:

protected <T extends Fruit> T cut(Class<T> fruitClass){
    try {
        return fruitClass.newInstance();
    } catch (InstantiationException | IllegalAccessException e) {

    }
}

2 个答案:

答案 0 :(得分:3)

您可以从传递的实例中获取类型:

protected <T extends Fruit> T cut(T fruit) {
    try {
        return (T)fruit.getClass().newInstance();
    } catch (InstantiationException | IllegalAccessException e) {
        // throw some exception or return an alternative instance or null
    }
}

答案 1 :(得分:0)

使用.class进行类识别非常简单,删除它可能会有问题。 但您可以使用Class.forName(String className)功能。

示例:

     protected <T extends Fruit> T cut(String fruitClass) {
    try {
        return Class.forName(fruitClass).newInstance();
    } catch (InstantiationException | IllegalAccessException | ClassNotFoundException  e) {
        // throw some exception or return an alternative instance or null
    }
   }

此功能的用法类似于cut("com.example.fruit.Orange")。但请记住,您需要传递该类的全名