我注意到在 Java Reflection API 中有两种不同的调用构造函数的方法:getDeclaredConstructors
/getConstructors
方法。尽管 Java 文档略有不同(getDeclaredConstructors
似乎暗示它返回所有构造函数,而不是公共构造函数),尚不清楚为什么 API 显式支持这两种不同的方法。
更重要的是,我想知道:如果我们动态调用类,什么时候一种方法会比另一种方法更好?例如,访问私有构造函数的目的是什么?
getDeclaredConstructors http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getDeclaredConstructors%28%29(当你想要的时候all构造函数)
返回 Constructor 对象数组,反映此 Class 对象表示的类声明的所有构造函数。它们是公共构造函数、受保护构造函数、默认(包)访问构造函数和私有构造函数。
getConstructors http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getConstructors%28%29(当你想要的时候only public
构造函数)
返回一个包含 Constructor 对象的数组,该对象反映了此 Class 对象所表示的类的所有公共构造函数。
因此,查看两者的文档,我认为区别在于getConstructors
仅返回public
构造函数同时getDeclaredConstructors
返回所有构造函数(public
, protected
、默认(包)访问权限,以及private
)
所以,如果您只需要public
构造函数然后使用getConstructors
。否则,如果您需要所有构造函数(忽略构造函数的访问修饰符),则使用getDeclaredConstructors
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)