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);


}
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@Deprecated注解的作用是表示某个程序元素已过时,不推荐使用。当使用@Deprecated修饰一个类、方法、字段等时,编译器会在使用该元素时给出警告,以提醒开发者不推荐使用该元素。尽管被@Deprecated修饰的元素可以继续使用,但是建议开发者尽量避免使用过时的元素,以免引发潜在的问题。 范例:<<引用:@Deprecated 注解 @Deprecated: 用于表示某个程序元素(类,方法等)已过时如果使用 Deprecated 去修饰一个类,表示这个类已经过时了,但过时不代表不能用了,即不推荐使用,仍然可以使用 public class Deprecated_ { public static void main(String[] args) { A a = new A(); System.out.println(a.n1); a.hi(); } } @Deprecated class A { @Deprecated public int n1 = 10; @Deprecated public void hi() { System.out.println("hello 兮动人!"); } } 可以看到被 @Deprecated 修饰后,使用的时候就会有个横线划掉的标注,但依然可以正常输出 2. @Deprecated 的说明 用于表示某个程序元素(类,方法等)已过时可以修饰方法,类、字段、包、参数等查看源码 @Deprecated的作用可以做到新旧版本的兼容和过渡。 引用:用 @Deprecated注解的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择,本文给大家介绍java @deprecated注解的作用及传递性,对本文感兴趣的朋友一起学习吧。>> 可以看到,@Deprecated注解的作用是表示某个程序元素已过时,不推荐使用。被@Deprecated修饰的元素在使用时会有横线划掉的标注,但仍然可以正常输出。该注解可以修饰方法、类、字段、包、参数等,用于实现新旧版本的兼容和过渡。通常情况下,使用@Deprecated注解的程序元素是因为它们可能存在风险或有更好的选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值