Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何转换:剪切(Orange.class)->;切割(橙色)_Java - Fatal编程技术网

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

Java 如何转换:剪切(Orange.class)->;切割(橙色),java,Java,如何转换:剪切(Orange.class)->剪切(Orange) 剪切函数如下所示: protected <T extends Fruit> T cut(Class<T> fruitClass){ try { return fruitClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { } } 受保护的T形切割(类)

如何转换:剪切(Orange.class)->剪切(Orange)

剪切函数如下所示:

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

    }
}
受保护的T形切割(类){
试一试{
返回fruitClass.newInstance();
}捕获(实例化异常|非法访问异常e){
}
}

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

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
    }
}
受保护的T形切割(T形水果){
试一试{
return(T)fruit.getClass().newInstance();
}捕获(实例化异常|非法访问异常e){
//抛出一些异常或返回另一个实例或null
}
}

使用
.class
进行类标识非常简单,删除它可能会有问题。 但你可以使用函数

例如:

     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
    }
   }
受保护的T形切割(字符串类){
试一试{
返回Class.forName(水果类).newInstance();
}catch(实例化异常|非法访问异常| ClassNotFoundException){
//抛出一些异常或返回另一个实例或null
}
}

此函数的用法类似于
cut(“com.example.fruit.Orange”)
。但是请记住,您需要传递该类的全名。

传入的参数是类类型而不是实例
public class
@JaxT我以为您想将参数从
class
更改为
T
。这不就是问题所在吗?如果这不是你的意思,那么你所说的
cut(Orange.class)->cut(Orange)
,是什么意思呢?简而言之:我可以从Orange.class中删除“.class”吗。因为我发现那个切口(橙色的)很难看。优雅的外观被切割(橙色),橙色是类而不是实例。@JaxT如果您希望将
传递给您的方法,您可以编写
Orange.class
(没有什么难看的)或
Orange.getClass()
,其中,
orange
orange
的一个实例。感谢您对@Eran的澄清-因此没有办法实现我所寻找的-将标记此答案正确,因为它正确描述了当您传入实例时要做的事情只需快速评论。使用
Orange.class
com.example.fruit.Orange更漂亮
yes Orange.class比“com.example.fruit.Orange”更漂亮