如何从小部件实例获取类实例。在gwt中,我的小部件是pojo类的私有字段。我能够使用instanceOfPojo.returnWidget()获取小部件;方法。我可以知道如何获取小部件的实例类,以便可以用于

   if( widget instanceof CustomWidgetClass) ?


-
我改一下

假设,AbcClass扩展了Composite,我们可以检查是否与

if(widget instanceof AbcClass)  .


但是可以说我们不知道类AbcClass存在,但是我们可以获取abcClass的实例。使用abcClass的这个实例,如何使用Java创建类似的类,我们将其称为DefClass,以便可以将abcClass强制转换为它。

最佳答案

...因此,与if(widget instanceof instanceOfPojo.returnWidget())相比,我该如何使用它?


我真的很难理解您的要求。您是否要获得等效的widget instanceof instanceOfPojo.returnWidget(),而该等效项由于instanceof仅适用于Class文字而无法使用?

要查看instanceOfPojo.returnWidget()的类是否是widget的类的超类,可以使用isAssignableFrom

instanceOfPojo.returnWidget().getClass().isAssignableFrom(widget.getClass());


要查看它们是否完全相同:

instanceOfPojo.returnWidget().getClass() == widget.getClass()


如果这不是您的意思,请尝试澄清您的问题。

编辑:OP之后澄清了这个问题。


...我们可以获得abcClass的实例。与此abcClass实例一起,如何使用Java创建类似的类


要获取一个类的实例,然后从中创建一个类似的类,需要在运行时动态创建一个类。在Java中可以动态创建类,但是我非常怀疑您是否可以在GWT客户端代码中实现。这是因为GWT仅支持Java的一个子集,并转换为Javascript。


...我们将其称为DefClass,以便我们可以将abcClass转换为它?


由于abcClass的类是(“ unknown”)类AbcClass,并且AbcClass直接从Composite派生,因此您将无法将abcClass强制转换为该动态类DefClassDefClass不属于abcClass继承层次结构(AbcClass-> Composite-> Widget-> UIObject-> Object),并且您不能更改该继承层次结构以包含在事实运行后。

07-24 15:20