Java 如何转换:剪切(Orange.class)->;切割(橙色)
如何转换:剪切(Orange.class)->剪切(Orange) 剪切函数如下所示: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形切割(类)
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”更漂亮