newInstance()方法已过时(即:@Deprecated(since = “9“)),快来康康怎办呀?

newInstance()方法已过时(即:@Deprecated(since = “9”)),快来康康怎办吖?

The call
clazz.newInstance()
can be replaced by
clazz.getDeclaredConstructor().newInstance()

== 以上片段为jdk9的官方解释(clazz为Class的一个实例)==
目前大多数企业级开发还在使用jdk8,在jdk8中创建运行时类的对象时,使用的方法大多数都是clazz.newInstance();
** 但在jdk9中clazz.newInstance()被Deprecated掉了,jdk9推荐使用clazz.getDeclaredConstructor.newInstance().**
** jdk的版本在持续更新,大的方向肯定是向前走,因此笔者建议上述两种方法都掌握。**
两种方法的具体使用场景请看下方代码段:

/*
* 如何调用运行时类的构造器:
* */
@Test
    public void testConstructor() throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
    Class clazz = Person.class;
    //1.获取指定的构造器:
    Constructor con1 = clazz.getDeclaredConstructor(String.class);
    //2.保证此构造器是可访问的:
    con1.setAccessible(true);
    //3.调用此构造器创建运行时类的对象(两种方法):
    //方法一:jdk8以及8之前
   //Person p1= (Person)clazz.newInstance();
    //方法二:jdk9以及9之后:
    Person p2 =(Person)con1.newInstance("Tom");
    System.out.println(p2);


}

版权声明:本文为m0_55459239原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。