java - Class.forname("name").newInstance() vs name.class.newInstance : Difference in usage perspective -
i start example: have class classload.loadable
.
package classload; public class loadable { static{ system.out.println("loaded already....."); } public loadable(){ system.out.println("now created....."); } }
which loaded , created instance in following 2 ways.
first:
public static void main(string[] args) throws exception { system.out.println("starting ....."); class.forname("classload.loadable").newinstance(); }
second:
public static void main(string[] args) throws exception { system.out.println("starting ....."); classload.loadable.class.newinstance(); }
both gives same output expected(since class.forname
returns same class
object):
starting ..... loaded already..... created.....
i want know scenarios use class.forname
, whereever may use .class
object directly
the simplest solution use
new loadable();
if class know @ compile time , expect available @ runtime. note: throw noclassdeferror
@ runtime if not available.
if not sure available runtime, might use
class.forname("classload.loadable").newinstance();
as clearer exceptions thrown.
the problem with
classload.loadable.class.newinstance()
is it's not particularly useful in either context.
note: class.newinstance()
has known issue throw checked exceptions don't know about. i.e. if constructor throws checked exception won't wrapped , compiler can't tell thrown.
Comments
Post a Comment