получить экземпляр виджета - PullRequest
0 голосов
/ 28 января 2011

как получить intance класса из экземпляра виджета. в gwt мой виджет является приватным полем класса pojo. я смог получить виджет используя instanceOfPojo.returnWidget (); метод. Могу ли я узнать, как получить экземпляр класса виджета, чтобы я мог использовать для

   if( widget instanceof CustomWidgetClass) ?

- Позвольте мне перефразировать

допустим, AbcClass расширяет Composite, мы можем проверить, совпадает ли с

if(widget instanceof AbcClass)  . 

но допустим, мы не знаем, существует ли класс AbcClass, но мы можем получить экземпляр abcClass. с этим экземпляром abcClass, как использовать Java для создания аналогичного класса, и мы называем его DefClass, чтобы мы могли привести к нему abcClass?

Ответы [ 2 ]

1 голос
/ 28 января 2011

Если у вас есть виджет внутри вашего POJO, то я бы порекомендовал вам пересмотреть ваш дизайн.Может быть, фабрика будет лучшим дизайном для того, что вы пытаетесь сделать.

0 голосов
/ 28 января 2011

... так как мне использовать его по сравнению с if (widget instanceoffileo.returnWidget ())?

Мне действительно трудно понять, чтоты просишь.Вы пытаетесь получить рабочий эквивалент widget instanceof instanceOfPojo.returnWidget(), который не работает, потому что instanceof работает только с литералами класса?

Чтобы узнать, является ли класс instanceOfPojo.returnWidget() суперклассомКласс widget, вы можете использовать isAssignableFrom :

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

Чтобы увидеть, являются ли они точно таким же классом:

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

Еслиэто не то, что вы имеете в виду, пожалуйста, попробуйте уточнить ваш вопрос.

Редактировать: ОП с тех пор уточнил вопрос.

... мы можем получить экземпляр abcClass.с этим экземпляром abcClass, как использовать java для создания аналогичного класса

Чтобы получить экземпляр класса и затем создать аналогичный класс из него, потребуется динамическое создание класса во время выполнения.В Java возможно динамическое создание класса, но я очень сомневаюсь, что вы могли бы сделать это в клиентском коде GWT.Это потому, что GWT поддерживает только подмножество Java и переводится в Javascript.

... мы называем его DefClass, чтобы мы могли привести к нему abcClass?

Поскольку класс abcClass является («неизвестным») классом AbcClass и AbcClass является производным непосредственно от Composite, вы не сможете привести abcClass к этому динамическому классу DefClass.DefClass не является частью abcClass иерархии наследования (AbcClass -> Composite -> Widget -> UIObject -> Object), и вы не можете изменить эту иерархию наследования для включения DefClass во время исполнения после факта.

...