Типы

Тема в разделе "Java", создана пользователем -, 2 дек 2008.

  1. Гость

    Здравствуйте всем!
    В Microsoft C# есть нечто определяющее тип и к нему приводящее в случае надобности, если он (тип) неизвестный (var). Есть ли подобное в Java?
    Заранее спасибо.
     
  2. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    нету и не надо
     
  3. Гость

    Приведите пример зачем вам это понадобилось? :)
     
  4. Гость

    У меня раньше был вопрос по поводу передачи в обработчик выбранной кнопки, его я решил. Возник вопрос, как выходить из подобных ситуаций в дальнейшем не перелопачивая ворох информации. В C# набрел на то, как там решается эта ситуация, мне подумалось, что в Java, раз уж он был предметом подражания для C#, должно быть что-то похожее.
     
  5. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    поясните пж, а то в упор связи не увидел.
     
  6. etc

    etc Гость

    наверное про sender речь, если правильно протелепатировал :)
     
  7. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    а толку?! все равно нужно знать тип сендера, что какнить заюзать его. единственный вариант, есть несколько сендеров без общего предка, но у которых нужный метод имеет одинаковую сигнатуру.
     
  8. Yason

    Yason Гость

    Пряник
    Есть такое, копать в сторону java.lang.Object.getClass(), java.lang.Class.getMethod() и java.lang.reflect.Method.invoke().
    Но если java.lang.reflect приходится использовать для обработки нажатия кнопки - 99% у Вас что-то очень не так со структурой программы. Есть ощущение, что Вы ищете танк для охоты на воробья :eek:
     
  9. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    Yason
    var это скорее динамический вывод типов, к рефлексии имеет косвенное отношение
     
  10. Гость

    Пытаясь найти решение как привести к нужному типу выбранную кнопку (кстати ошибочно) (выражение оператора выбора требовал boolean), параллельно в C# (как видим связь очень косвенная) возникла ситуация - разность объектов одного типа выдавала ошибку на несовместимость типов.

    DateTime d_1;
    DateTime d_2;
    d_1 = DateTime.Now;
    f();
    d_2 = DateTime.Now;
    d_1 = d_1 - d_2;
    //Хотел подсчитать тики на выполнение f();

    В итоге удалось подсчитать таким образом.

    DateTime d_1;
    DateTime d_2;
    d_1 = DateTime.Now;
    f();
    d_2 = DateTime.Now;

    var t = d_1 - d_2;

    Кстати, профилировщик дело хорошее для выявления затрат, но я за чистоту эксперимента, а так же подумалось, что ситуации где может возникнуть потребность в использовании явно неопределенных типов (ненамеренно, как в моем случае) должна как-то решаться и в Java, раз уж она решается в C#.


    Конечно! Все оказалось гораздо проще: isSelected(); и всех делов-то. ;)
     
  11. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Насколько я понимаю, var к рефлексии вообще отношения не имеет - это просто фишка комппилятора, позволяющая не указывать тип, если его можно определить по rvalue. Синтаксический сахар, одним словом

    И вот в данном конкретном случае этот синтаксический сахар заменил собою обращение к MSDN, в ходе которого можно было бы выяснить, что DateTime - DateTime вернет структуру типа TimeSpan, а не DateTime.
     
Загрузка...

Поделиться этой страницей