Абстрактный класс Java, реализующий интерфейс с универсальными шаблонами

Я пытаюсь определить абстрактный класс, реализующий Comparable. Когда я определяю класс со следующим определением:

public abstract class MyClass implements Comparable <MyClass>

подклассы должны реализовать compareTo (объект MyClass) . Вместо этого я хочу, чтобы каждый подкласс реализовал compareTo (SubClass object) , принимая объект своего собственного типа. Когда я пытаюсь определить абстрактный класс с помощью чего-то вроде:

public abstract class MyClass implements Comparable <? extends MyClass>

, он жалуется, что " )?

Пожалуйста, объясните свой ответ. Я знаю, что он будет «работать», но есть ли случай, когда он не будет работать?

Спасибо!

9
задан Mike Moore 29 August 2010 в 00:22
поделиться

2 ответа

© и © задают один и тот же символ — 169 эквивалентно шестнадцатеричному A9. Оба они указывают символ авторского права. Сущности символов в HTML всегда относятся к кодовым точкам Unicode, это описано в Стандарте HTML 4. Таким образом, даже если ваш набор символов изменится, ваши сущности по-прежнему будут ссылаться на одни и те же символы.

Это также означает, что вы можете кодировать символы, которых на самом деле нет в выбранном вами наборе символов. Я только что создал документ в наборе символов ISO-8859-1, но он включает греческую лямбду. Кроме того, ASCII не может напрямую кодировать символ авторского права, но может с помощью символов.

Редактировать: Читая комментарии к другому ответу, я хочу немного пояснить. Если вы используете UTF-8 в качестве кодировки символов для своего документа, вы можете в исходном HTML-коде написать символ авторского права как есть. (Конечно, вам нужно найти какой-то способ его ввода: обычно это копирование и вставка.) UTF-8 позволит вам напрямую кодировать любой символ, который вы хотите. ISO-8859-1 гораздо более ограничен, а ASCII тем более. Например, в моем HTML, если мой документ является документом UTF-8, я могу сделать:

<p>Hi there. This document is ©2010. Good day!</p>

или:

<p>Hi there. This document is &#xA9;2010. Good day!</p>

или:

<p>Hi there. This document is &copy;2010. Good day!</p>

Первый действителен, только если набор символов поддерживает "©". Два других всегда действительны, но менее читабельны. Какой бы текстовый редактор вы ни использовали, если он того стоит, он должен быть в состоянии сообщить вам, в каком наборе символов он кодирует документ.

Если вы это сделаете, вам нужно убедиться, что ваш веб-сервер информирует клиента о правильном наборе символов или что ваш документ объявляет его примерно так:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Я использовал UTF-8 в качестве примера. XHTML должен иметь набор символов в открывающем теге .

10
ответ дан 4 December 2019 в 14:26
поделиться

Прелесть кодировки UTF-8 в том, что вы можете просто включить двоичный символ. Вам вообще не нужно кодировать его как сущность. Таким образом: ©

О, вы просто хотите узнать разницу между двумя сущностями? Здесь ничего нет. Один описывает байт в шестнадцатеричном формате, а другой — в десятичном.

4
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: