Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сигнатура в Java 1.5, Почему нельзя сделать так? 
:(
    Опции темы
sergejzr
Дата 16.6.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Код

public class TestClass {
    
public void test(List<String> a){}
public void test(List<Object>b){}
}


Зато ведь можно так:
Код

public class TestClass {
    
public void test(Vector<String> a){}
public void test(List<String>b){}
}

В принципе сигнатуры в первом случае можно ведь различить точно также, как и во втором.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
v2v
Дата 16.6.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



во втором случае в параметрах используются два разных типа import java.util.List и import java.util.Vector. 

Это сообщение отредактировал(а) v2v - 16.6.2008, 18:07


--------------------
PM   Вверх
Дрон
Дата 16.6.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 93



Цитата(sergejzr @  16.6.2008,  17:41 Найти цитируемый пост)
В принципе сигнатуры в первом случае можно ведь различить точно также, как и во втором.

Сам уже сталкивался с этим. 
Как я понимаю, первый пример не работает из-за того, что на уровне байт-кода нет никаких шаблонов, а есть только метод public void test(java.util.List)

Это сообщение отредактировал(а) Дрон - 16.6.2008, 18:22


--------------------
Да. Именно так.
PM   Вверх
sergejzr
Дата 16.6.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(v2v @  16.6.2008,  17:06 Найти цитируемый пост)
во втором случае в параметрах используются два разных типа import java.util.List и import java.util.Vector. 

Vector - производнoe от List.

Цитата(Дрон @  16.6.2008,  17:13 Найти цитируемый пост)
Как я понимаю, первый пример не работает из-за того, что на уровне байт-кода нет никаких шаблонов, а есть только метод public void test(java.util.List).

Ответ принимается. То есть из-за несовместимости на уровне байт кода.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Дрон
Дата 16.6.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 93



Цитата(sergejzr @  16.6.2008,  18:23 Найти цитируемый пост)
Ответ принимается. То есть из-за несовместимости на уровне байт кода.

Ну как-то так. То есть непосредственно во время компиляции твоего класса ещё можно было бы их различить, но вот когда класс уже собран, то все различия стираются.

Я не знаю зачем так сделано, можно было бы предположить, что для совместимости с предыдущими версиями Java, но вроде как классы, скомпилированные для Java 5, всё равно не будут работать с предыдущими JRE. А больше никаких предположений у меня нет.

Это сообщение отредактировал(а) Дрон - 16.6.2008, 18:29


--------------------
Да. Именно так.
PM   Вверх
serger
Дата 17.6.2008, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 1
Всего: 5



Цитата(Дрон @ 16.6.2008,  18:28)
Я не знаю зачем так сделано, можно было бы предположить, что для совместимости с предыдущими версиями Java, но вроде как классы, скомпилированные для Java 5, всё равно не будут работать с предыдущими JRE. А больше никаких предположений у меня нет.

Это потомучто javac компилятор, а java интерпретатор.. ;)  smile 

Интерпретатор байткода никак не связан с компилятором в байткод.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
LSD
Дата 17.6.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Дрон @  16.6.2008,  19:28 Найти цитируемый пост)
Я не знаю зачем так сделано, можно было бы предположить, что для совместимости с предыдущими версиями Java, но вроде как классы, скомпилированные для Java 5, всё равно не будут работать с предыдущими JRE. А больше никаких предположений у меня нет.

На самом деле использовать генерики для JDK 1.4 можно.

А вот почему решили не делать поддержку генериков на уровне байткода, это действительно вопрос.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
serger
Дата 17.6.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 1
Всего: 5



Это более фундаментальная вещь - м/б уже делают...
Платформ много.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
LSD
Дата 17.6.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(serger @  17.6.2008,  17:08 Найти цитируемый пост)
Это более фундаментальная вещь - м/б уже делают...
Платформ много. 

Локомотив развития Java - Sun, если они этого не сделают, то этого и не будет. И у них ключевых платформы всего 3 - Windows, Linux, Solaris. Пока ни в одном roadmap-е я не видел упоминания о поддержке генериков на уровне байткода.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
w1nd
Дата 17.6.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



К прозвучавшему ответу на вопрос топикстартера хочется добавить одно НО:

Код
class A {

    public abstract void method(Collection collection);

}

class B extends A {

    @Override public void method(Collection<?> collection) { // Это не компилируется
    }

}


В общем, отовсюду веет большой продуманностью ;)


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.