Поскольку Java не поддерживает перегрузку оператора, == ведет себя одинаково для каждого объекта, но equals () - это метод, который может быть переопределен в Java, а логика для сравнения объектов может быть изменена на основе бизнес-правил.
Основное различие между == и equals в Java заключается в том, что «==» используется для сравнения примитивов, тогда как метод equals () рекомендуется проверять равенство объектов.
Сравнение строк является распространенным сценарием использования оба метода == и equals. Поскольку класс java.lang.String переопределяет метод equals, он возвращает true, если два объекта String содержат одинаковое содержимое, но == будет возвращать true, только если две ссылки указывают на один и тот же объект.
Ниже приведен пример сравнения две строки в Java для равенства с использованием метода == и equals (), которые устранят некоторые сомнения:
public class TEstT{
public static void main(String[] args) {
String text1 = new String("apple");
String text2 = new String("apple");
//since two strings are different object result should be false
boolean result = text1 == text2;
System.out.println("Comparing two strings with == operator: " + result);
//since strings contains same content , equals() should return true
result = text1.equals(text2);
System.out.println("Comparing two Strings with same content using equals method: " + result);
text2 = text1;
//since both text2 and text1d reference variable are pointing to same object
//"==" should return true
result = (text1 == text2);
System.out.println("Comparing two reference pointing to same String with == operator: " + result);
}
}
Вероятно переходная ссылка, куда некоторый вызов метода типа возвращается, экземпляр SuperException упаковал ("удрученный") как, например, Исключение, но от осмотра кода в transitively включал код, т.е. код от Ваших внешних вызовов метода, компилятор знает, что необходимо смочь иметь информацию о том типе в какой-то момент.
Resharper сказал бы Вам, где имеет место, что необходимо добавить ссылку, и Вы могли использовать Отражатель иначе RedGate Lütz Roeder для сканирования скомпилированного IL для ссылки на этот тип двумя способами: 1) используйте поисковое средство, 2) откройте каждый открытый тип, который Вы используете и для который, который требует "фантомной" сборки, это попросит, чтобы Вы указали его местоположение.
Это чаще всего happends мне, когда я ссылаюсь на Замок. Виндзор, но не Замок. MicroKernel.:p
grep -R SuperException *
в основе Вашего проекта (добираются grep
от где-нибудь сначала) только, чтобы быть уверенным.
Это - то, где инструменты как Resharper действительно окупаются - простая Находка, Использования обычно говорят мне о таких "фантомных зависимостях" несколько раз.
Возможно, Вы могли перейти к своему определению Суперкласса исключений и попытаться Найти Все Ссылки (). Вы могли бы также хотеть заняться расследованиями, если блок, который SuperException, имеет круговую зависимость от Вашего основного блока (например, основной блок зависит от блока исключения, зависит от основного блока...).
При ссылке на какие-либо типы, который наследовался SuperException (даже если тип определил в другом блоке), Вам нужна ссылка на блок, в котором определяется SuperException.
Временно назначенный на этом.
Вы не могли бы ссылаться SuperException
, но Вы могли бы ссылаться SpecializedSuperException
, который получен из или так или иначе иначе использует SuperException
- Ваш grep проекта для SuperException
не будет ловить его все же.
Попытка имеет взлом с судом над NDepend
grep Ваша папка проекта. Это могла быть скрытая ссылка в Вашем проекте или проекте что Ваши ссылки проекта. Чистите с Блокнотом в случае необходимости.
Попытайтесь создать новый проект и добавить все Ваши классы к нему.
Это звучит довольно странным. Вот то, что я проверил бы затем:
Спасибо за Ваши ответы до сих пор. Я попробовал каждое предложение (кроме одного) напрасно.
Предложение, которое я не попробовал, состоит в том, чтобы создать новый проект и добавить весь мой материал к нему, мысль, которая действительно тестирует мое желание жить.;) Я могу попробовать это завтра, если я могу быть побеспокоен. Еще раз спасибо.
Я не думаю, что это - проблема кода. Что я вижу, что случай состоит в том, что одна из Ваших существующих ссылок, вероятно, полагается на тот тип в их собственных типах, которые Вы, вероятно, создаете в своем приложении.
Если это так, Вам действительно нужна та ссылка, даже если Вы явно не используете тип и даже при том, что другой блок, на который ссылаются, имеет свою собственную ссылку. Вы иногда получаете ту проблему со сторонними компонентами, которым нужны ссылки на типы, на которые Вы не сослались. Компилятор, очевидно, видит что-то в одном из Ваших существующих блоков, на которые ссылаются, и ожидает Вас к ссылаемому зависимый.
Так как это - ошибка компилятора, должна быть ссылка или использование SuperException где-нибудь в проекте.
Проводите строку, на которой компилятор показывает ошибку, и начните прослеживать дерево наследования объектов, используемых на той строке, Вы могли бы найти источник его тем путем.
Я соглашаюсь с другими комментариями здесь.. Существует ссылка в простом тексте где-нибудь! У меня были подобные проблемы в прошлом, куда поиск файлов проекта ничего не возвратил, оказывается, что это было в некотором другом файле, который не был автоматически взят в поиске.
Я не думаю, что создание нового проекта является решением здесь.. Необходимо быть положительны, что НИ ОДНА из ссылок в дереве зависимостей не использует SuperException..Ничего
Я никогда не испытывал это до такой степени, когда, я должен был буквально вытереть проект, я всегда находил ссылку где-нибудь. Удостоверьтесь поиск каждого файла.
Просто точка для добавления, если местоположение, на которое указывает ошибка, кажется случайным, который может часто означать, существует несоответствие между скомпилированным источником и файлом исходного кода.. Действительно ли это - приложение ASP.NET? У меня был он прежде, где скомпилированный DLL не был заменен на восстанавливании в вещах порождения папки временного файла ASP.NET добраться.. Интересный при отладке :)
Нет действительно ничего очень таинственного о проектах VS в наше время - это - все текстовые файлы и т.д. ЧТО-ТО должно сослаться на это class/dll, и что что-то должно быть частью Вашего проекта.
Вы имеете действительно grep'd или findstr'd целое дерево решения, каждый файл, для ссылки на то исключение?