Типы

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

Guest

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

Guest

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

Guest

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

Kmet

Java Team
25.05.2006
1 036
8
#7
а толку?! все равно нужно знать тип сендера, что какнить заюзать его. единственный вариант, есть несколько сендеров без общего предка, но у которых нужный метод имеет одинаковую сигнатуру.
 
Y

Yason

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

Kmet

Java Team
25.05.2006
1 036
8
#9
Yason
var это скорее динамический вывод типов, к рефлексии имеет косвенное отношение
 
G

Guest

#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#.


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

LuMee

Well-known member
02.05.2006
477
0
#11
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.