Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #7721

Re: Define Type at runtime

From BGB <cr88192@hotmail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Define Type at runtime
Date 2011-09-08 14:20 -0700
Organization albasani.net
Message-ID <4E6931A7.5010208@hotmail.com> (permalink)
References <4e678737$1@news.x-privat.org> <5a51c17a-6488-492c-bad4-857a622f5c46@glegroupsg2000goo.googlegroups.com> <j4b09c$stb$1@news.albasani.net> <ddb2e08e-5510-4145-a182-0bb18b627454@glegroupsg2000goo.googlegroups.com>

Show all headers | View raw


On 9/8/2011 11:25 AM, Lew wrote:
> BGB wrote:
>> Lew wrote:
>>> John wrote:
>>>> If I have a method:
>>>> public void someMethod(Object o){
>>>>        ...
>>>>        Entity<T>   entity;
>>>>        ....
>>>> }
>>>>
>>>> How could I define at runtime the type T if I have an Object?
>>>
>>> You can do an illegal cast with the help of '@SuppressWarnings("unchecked")' and a 'catch ( ClassCastException exc )'.
>>>
>>> You can under certain circumstances use a run-time type token of type 'Class<T>'.
>>>
>>> You can write your method to be type-safe in the first place and avoid the problem.
>>>
>>> Without some context we can't know what you really want.  Your question is far too non-specific.
>>>
>>
>> and, probably, not to forget "instanceof".
>
> That's pretty useless in this context.
>
>> eg, [sic] rather than, say:
>> Object obja;
>> try {
>>       SomeObject objb=(SomeObject)obja;
>>       ...
>> }catch(ClassCastException ex)
>> {
>> }
>>
>> one could be like:
>> if(obja instanceof SomeObject)
>> {
>>       SomeObject objb=(SomeObject)obja;
>>       ...
>> }
>>
>> which could be more useful if one wants to do the types N-way...
>>
>> if(...)
>> {
>>       ...
>> }else if(...)
>> {
>>       ...
>> }else ...
>>
>>
>> or such...
>
> That's bad advice on several fronts.  First of all, the OP was asking about restoring generics information, for which 'instanceof' is not useful, and second, multi-'if' constructs on type are a red flag of bad design.  Don't recommend bad design.
>

AFAICT, the OP was asking about dynamic type checking, which is what 
instanceof is for.

the bigger issue though would be, why the OP was dealing with the case 
in the first case (like, yes, does a common base-class exist besides 
"Object", or is there a common interface, ...), but failing this, nested 
if/else and instanceof does seem like a valid solution (and is probably 
still better than, say, a series of try/catch blocks intermixed with 
return statements).

try {
     ...
     return;
}catch(...) { ... }

try {
     ...
     return;
}catch(...) { ... }

...


but, whatever works...

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Define Type at runtime John <john@yahoo.com> - 2011-09-07 17:01 +0200
  Re: Define Type at runtime Mayeul <mayeul.marguet@free.fr> - 2011-09-07 17:20 +0200
    Re: Define Type at runtime John <john@yahoo.com> - 2011-09-07 17:25 +0200
      Re: Define Type at runtime Robert Klemme <shortcutter@googlemail.com> - 2011-09-08 08:12 -0700
        Re: Define Type at runtime John <jonh@yahoo.com> - 2011-09-09 09:01 +0200
          Re: Define Type at runtime Robert Klemme <shortcutter@googlemail.com> - 2011-09-09 04:47 -0700
  Re: Define Type at runtime Lew <lewbloch@gmail.com> - 2011-09-08 09:32 -0700
    Re: Define Type at runtime BGB <cr88192@hotmail.com> - 2011-09-08 11:07 -0700
      Re: Define Type at runtime Lew <lewbloch@gmail.com> - 2011-09-08 11:25 -0700
        Re: Define Type at runtime BGB <cr88192@hotmail.com> - 2011-09-08 14:20 -0700
          Re: Define Type at runtime Lew <lewbloch@gmail.com> - 2011-09-08 14:35 -0700
            Re: Define Type at runtime BGB <cr88192@hotmail.com> - 2011-09-08 14:54 -0700
              Re: Define Type at runtime Lew <lewbloch@gmail.com> - 2011-09-08 17:10 -0700
                Re: Define Type at runtime BGB <cr88192@hotmail.com> - 2011-09-09 00:32 -0700
      Re: Define Type at runtime John <jonh@yahoo.com> - 2011-09-09 09:02 +0200

csiph-web