gpt4 book ai didi

java - 如何从泛型方法实例化 java 类

转载 作者:行者123 更新时间:2023-12-02 11:11:35 24 4
gpt4 key购买 nike

我正在尝试学习 Java 中的泛型。我的问题是我可以从泛型方法实例化一个java类吗?我有一个像下面这样的方法

private  void  AddAction(ModelBuilding model,TableView table) {         
table.getItems().add( new ModelBuilding());
}

这里ModelBuilding()是我的自定义java类。当我尝试使此方法通用时,我在实例化 ModelBuilding() 类时遇到问题。我尝试了这样的方法,但出现了编译错误。

private <E> void  AddAction(E mode,TableView table) {           
table.getItems().add( new E());
}

如何使 AddAction(E mode,TableView table) 方法通用?

最佳答案

由于您传递的是 E 的实例对于您的方法,您可以通过反射创建同一类的实例:

private <E> void AddAction(E mode,TableView table) {           
table.getItems().add(mode.getClass().newInstance());
}

另一方面,如果您不使用 E实例传递给你的方法,传递 Class<E> 就足够了为了创建一个新实例:

private <E> void AddAction(Class<E> clazz,TableView table) {           
table.getItems().add(clazz.newInstance());
}

无论哪种方式,您都必须捕获 newInstance() 可能引发的一些异常。 .

或者,只需添加传递给您的方法的实例。该方法的调用者将创建实例:

private <E> void AddAction(E mode,TableView table) {           
table.getItems().add(mode);
}

关于java - 如何从泛型方法实例化 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com