反射创建对象与new创建对象的区别

为什么我感觉可以用反射的都可以用new,刚开始学有点不理解编译时new对象无法确定时用反射这句话

在写代码的时候,明确知道现在要用什么类的,可以用new。还有一种情况,你不知道要用什么类,就可以用反射了。
举例说明:你在开发一个射击类游戏,player需要持有gun才能射击。但是gun有不同类型,如手枪、步枪,需要用户在地图上捡。你在开发的时候是不知道用户捡到什么枪的,这时候你就可以用反射,去动态地创建对象。

  1. new关键字可以调用任何public的构造方法,而反射只能调用无参构造方法。
  2. new 的时候你创建的对象类型确定的呀,比如new User(); 如果反射呢?
Class c1 = Class.forName("com.gupao.User");
         //创建此Class对象所表示类的一个新实例,
         //newInstance方法调用的是Person的空参数构造方法
         Object o = c1.newInstance();
  1. Spring AOP和Java动态代理都是基于反射。

https://blog.csdn.net/u014427391/article/details/119518788
正好看到热榜上有讲解反射的,你可以去看下。