有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何转换:cut(Orange.class)>cut(Orange)

如何转换:剪切(Orange.class)>;切(橙色)

剪切函数如下所示:

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

    }
}

共 (2) 个答案

  1. # 1 楼答案

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

    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
        }
    }
    
  2. # 2 楼答案

    使用.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")。但请记住,你需要传递该类的全名