Вы не можете переопределить метод private
. Это не видно, если вы добавили A
в B
. Вы можете переопределить метод protected
, но это не то, что вы здесь делаете (и да, здесь, если вы переместите свой main
в A
, вы получите другой метод. Я бы рекомендовал @Override
, когда вы намерены переопределить
class A extends B {
@Override
public void don() { // <-- will not compile if don is private in B.
System.out.println("hoho public");
}
}
. В этом случае почему компилятор не предоставил ошибку для использования
blockquote >t.don()
, который являетсяprivate
?Учебные пособия по Java: предопределенные типы аннотаций говорят (частично)
Хотя это не требуется для использования этой аннотации при переопределении метода, это помогает предотвращать ошибки. Если метод, отмеченный с помощью
blockquote>@Override
, не может правильно переопределить метод в одном из своих суперклассов, компилятор генерирует ошибку.
Я могу только говорить о .NET, но если у Вас есть Веб-сервис ASP.net, необходимо быть в состоянии добавить перечисление непосредственно к нему.
, Когда Вы тогда используете, "Добавляют веб-Ссылка" в Вашем Клиентском приложении, получающийся Класс должен включать то перечисление
, Но это от вершины моей головы, я вполне уверен, я сделал это в прошлом, но я не могу сказать наверняка.
Я предложил бы против передачи целого числа между ними, просто в целях удобочитаемости и отладки. Скажите прохождение через журналов, и Вы видите набор 500 ошибок для DocumentType=4. Теперь необходимо пойти посмотреть, который DocumentType равняется 4. Или если одно из приложений относится к числу, которое не существует в другом, возможно, из-за несогласованных версий.
Это - немного больше кода, и это протирает часть статического контроля типов мозга немного сырых данных, но в протоколах сверху HTTP полученная мудрость должна принять сторону четких строк по непрозрачным перечислениям.
Я все еще использовал бы перечисление внутренне, но буду ожидать, что потребители передадут меня только имя, не само числовое значение.
просто некоторый глупый пример для иллюстрирования:
public enum DocumentType
{
Invoice,
Contract,
WorkOrder,
SignedWorkOrder
}
[WebMethod]
public void UploadDocument(string type, byte[] data)
{
DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
При потреблении веб-сервиса от страницы/приложения.NET необходимо быть в состоянии получить доступ к перечислению после добавления веб-ссылки на проект, который использует сервис.
В.NET перечислимые величины (по умолчанию) сериализируются в xml с именем. Для экземпляров, где у Вас может быть несколько значений ( флаги ), тогда это помещает пространство между значениями. Это работает, потому что перечисление не содержит пробелы, таким образом, можно получить значение снова путем разделения строки (т.е. "Выставляют счет Контракту SignedWorkOrder", с помощью примера lubos).
можно управлять сериализацией значений в веб-сервисах asp.net с помощью XmlEnumAttribute, или с помощью атрибут EnumMember при использовании WCF.
Если Вы не работаете с.NET к.NET SOAP, можно все еще определить перечислитель, если обе конечных точки используют WSDL.
<s:simpleType name="MyEnum">
<s:restriction base="s:string">
<s:enumeration value="Wow"/>
<s:enumeration value="This"/>
<s:enumeration value="Is"/>
<s:enumeration value="Really"/>
<s:enumeration value="Simple"/>
</s:restriction>
</s:simpleType>
до WSDL-> инструмент генератора Прокси для парсинга этого в перечислимый эквивалент на клиентском языке.
Существуют некоторые довольно серьезные основания для того, чтобы не использовать enum
с на интерфейсной границе как этот. Рассмотрите сообщение Dare на предмете.
Я заметил, что при использовании, "Добавляют Сервисная Ссылка" в противоположность тому, "Добавляют веб-Ссылка" с VS.net, фактические перечислимые значения сталкиваются, а также перечислимые имена. Это является действительно раздражающим, поскольку я должен поддерживать и 2,0 и 3,5 клиента. Я заканчиваю тем, что имел необходимость войти в сгенерированный код прокси веб-сервиса 2.0 и вручную добавить, что перечисление оценивает каждый раз, когда я вношу изменение!