Типы

  • Автор темы Guest
  • Дата начала
G

Guest

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

Guest

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

Guest

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

etc

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

Kmet

Well-known member
25.05.2006
904
8
BIT
0
а толку?! все равно нужно знать тип сендера, что какнить заюзать его. единственный вариант, есть несколько сендеров без общего предка, но у которых нужный метод имеет одинаковую сигнатуру.
 
Y

Yason

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

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Yason
var это скорее динамический вывод типов, к рефлексии имеет косвенное отношение
 
G

Guest

поясните пж, а то в упор связи не увидел.
Пытаясь найти решение как привести к нужному типу выбранную кнопку (кстати ошибочно) (выражение оператора выбора требовал 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#.


Пряник
Есть такое, копать в сторону , и .
Но если java.lang.reflect приходится использовать для обработки нажатия кнопки - 99% у Вас что-то очень не так со структурой программы. Есть ощущение, что Вы ищете танк для охоты на воробья :eek:
Конечно! Все оказалось гораздо проще: isSelected(); и всех делов-то. ;)
 
L

LuMee

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

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

var t = d_1 - d_2;
И вот в данном конкретном случае этот синтаксический сахар заменил собою обращение к MSDN, в ходе которого можно было бы выяснить, что DateTime - DateTime вернет структуру типа TimeSpan, а не DateTime.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!