исключение java classcast - PullRequest
       0

исключение java classcast

1 голос
/ 03 мая 2010

У меня проблемы с преобразованием типа документа XML в объект Document. это кусок кода

Document doc=null;
doc = (Document) parser.parse(sourceFile);

для этой строки 2 генерируется исключение java classcast

без указания типа показывает ошибку как

Type mismatch: cannot convert from org.w3c.dom.Document to javax.swing.text.Document

как мне теперь правильно настроить тип? какие-либо предложения ??

Ответы [ 3 ]

6 голосов
/ 03 мая 2010

Проблема в том, что в неполных именах есть коллизия.

То есть, в результате ваших import утверждений, неквалифицированное имя Document относится к javax.swing.text.Document, но вам действительно нужно org.w3c.dom.Document (это тип, который возвращает анализатор).

Вы можете исправить это, используя полное имя:

org.w3c.dom.Document doc = (org.w3c.dom.Document) parser.parse(sourceFile);

Или вы также можете конкретно import конкретный Document следующим образом:

import javax.swing.text.*;
import org.w3c.dom.*;
import org.w3c.dom.Document;

//...

Document doc = (Document) parser.parse(sourceFile);

Это называется однотипным объявлением импорта ( JLS 7.5.1 ), и его можно использовать для "затенения" других объявлений.

2 голосов
/ 03 мая 2010

Эти два интерфейса имеют одно и то же имя, но совершенно не связаны между собой. Вы не можете приводить между ними - это не имеет смысла, так как они представляют совершенно разные понятия (теоретически, у вас может быть компонент Swing, который отображает деревья XML и использует DOM Document в качестве модели, но я не думаю, что это то, что у вас есть).

То, что вы, вероятно, хотите сделать, это взять непарсированный XML и вызвать setText(xmlText) для компонента Swing, с которым вы хотите его отобразить.

1 голос
/ 03 мая 2010

Является ли ваше приложение приложением Swing или нет?

Вы, вероятно, используете IDE, которую вы автоматически разрешаете упорядочивать импорт в исходном файле. В среде IDE добавлен импорт для javax.swing.text.Document вместо org.w3c.dom.Document. Это то, с чем я часто сталкиваюсь при использовании Eclipse IDE.

Что вы должны сделать: удалить эту строку из верхней части вашего файла исходного кода:

import javax.swing.text.Document;

Заменить его на:

import org.w3c.dom.Document;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...