Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / метод equals() / 7 сообщений из 7, страница 1 из 1
21.04.2007, 14:56:40
    #34478042
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
господа!
Почему метод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  void  test()
 { 
    String s = "A";
    Integer i =  1 ;
     if (s.equals(i))
          System.out.println("equals");
     else 
          System.out.println("different");
  }
прекрасно компилируется?
...
Рейтинг: 0 / 0
21.04.2007, 15:12:22
    #34478051
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
неявно вызывается i.toString()
...
Рейтинг: 0 / 0
21.04.2007, 15:19:10
    #34478056
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
А что там должно мешать компиляции? Абсалютно нормальный код.
...
Рейтинг: 0 / 0
21.04.2007, 17:19:23
    #34478120
ю
ю
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
Сигнатуру метода Object.equals смотрел?
Код: plaintext
 boolean  equals(Object obj)
Никакого преобразования toString() нету - нафига, раз объект, два объект. С таким же успехом можно Double и Integer сравнивать, вы же не будете утверждать что здесь что-то еще будет "неявно" вызваться?
...
Рейтинг: 0 / 0
21.04.2007, 18:02:40
    #34478134
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
раз в документации метод equals класса String находится в списке методов класса а не в списке методов унаследованных от Object значит данных метод педеопределен, и в нем использован метод instanceof. т.е.:
Код: plaintext
1.
2.
3.
        Integer i =  1 ;
        String s = "1";
        
        System.out.println((s.equals(i)));
вернет false, а
Код: plaintext
1.
2.
3.
        Integer i =  1 ;
        String s = "1";
        
        System.out.println((s.equals(i.toString())));
true.
таким образом неявного преобразования к String в данном случае нету.
Если вам не нравится работа этого метода то используйте instanceof сами
...
Рейтинг: 0 / 0
21.04.2007, 18:40:05
    #34478157
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
1024неявно вызывается i.toString()
Ню-ню.
...
Рейтинг: 0 / 0
21.04.2007, 22:26:53
    #34478313
chand0s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
метод equals()
1) Как уже сказали, можно смотреть сигнатуру метода String.equals()
Код: plaintext
 boolean  equals(Object anObject)
2) А можно - исходники. Там написано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
     public   boolean  equals(Object anObject) {
	 if  ( this  == anObject) {
	     return  true;
	}
	 if  (anObject  instanceof  String) {    // в Вашем случае это условие ложно!..
	    String anotherString = (String)anObject;
	     int  n = count;
	     if  (n == anotherString.count) {
		 char  v1[] = value;
		 char  v2[] = anotherString.value;
		 int  i = offset;
		 int  j = anotherString.offset;
		 while  (n-- !=  0 ) {
		     if  (v1[i++] != v2[j++])
			 return  false;
		}
		 return  true;
	    }
	}
	 return  false;             // ... значит выполняется только этот оператор
    }
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / метод equals() / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]