My goal is to create object by it's name using non-default constructor.
Let's consider the following simple "hello world" program to do this:
With Java 1.6 it works fine, but gives compile time warning:
Note: Hello.java uses unchecked or unsafe operation
Note: Recompile with -Xlint:unchecked for details.
I know the problem is with generics, specifically here: clazz.getDeclaredConstructor(new Class[] {java.lang.String.class}); But how should i change this line to avoid warning?
Either use the compiler option or @SuppressWarnings("unchecked"). If you add the cast I think you'd get an unchecked cast warning, which means you'd have to do the same thing anyway. You could also make the clazz declaration generic and put the suppression there, and generify the Constructor init.
Ernest Friedman-Hill
author and iconoclast
Marshal
You can do something like this, which compiles cleanly, with no annotations. It's really the Class.forName() which prevents you from doing this any other way.
David Newton wrote: (Although is the arg list <?> necessary?)
No, I guess not -- I got carried away
Andrey Kozhanov
Ranch Hand
Joined: Mar 12, 2010
Posts: 79
posted
0
Ernest Friedman-Hill wrote:You can do something like this, which compiles cleanly, with no annotations. It's really the Class.forName() which prevents you from doing this any other way.