#java #servlets #applet
#java #сервлеты #апплет
Вопрос:
На стороне сервлета я пытаюсь получить вектор, отправленный из апплета. Код похож
InputStream in = request.getInputStream();
ObjectInputStream inputFromApplet = new ObjectInputStream(in);
Vector v = (Vector) inputFromApplet.readObject();
Но компилятор указывает, что следующее является неправильным.
Vector v = (Vector) inputFromApplet.readObject();
Сообщение об ошибке является
Несколько маркеров в этой строке
- Необработанное исключение типа ClassNotFoundException
- Вектор — это необработанный тип. Ссылки на универсальный тип Vector должны быть параметризованы
- Вектор — это необработанный тип. Ссылки на универсальный тип Vector должны быть параметризованы
Что не так с моим кодом? Спасибо.
Ответ №1:
Для исключения оберните свой код в
try {
<your code here>
} catch (ClassNotFoundException e) {
<code that happens when class can't be found>
}
Другие сообщения являются предупреждениями, которые не остановят компиляцию вашей программы. Они относятся к необходимости параметра в параметризованных типах для соответствия новым спецификациям (начиная с Java 1.5). Итак, если вы хотите сохранить целые числа в векторе, используйте Vector<Integer>
. Это изменяет методы на require Integers
вместо универсального Object
, который вы обычно получаете, и повышает безопасность типов.
Ответ №2:
Вы хотите указать тип данных для vector — например
Vector<String> v = ...
Однако String может быть не лучшим выбором для вашего приложения.
Комментарии:
1. Вы не можете использовать примитивный тип данных в качестве универсального аргумента.
2. Хороший улов — изменен с int на String.