我对java很陌生,在java教程中它使用术语“class literal”和“reflection”。
来自java网站http://docs.oracle.com/javase/tutorial/reflect/index.html的反射api路径,它说
可扩展性功能 应用程序可以通过使用完全限定名称创建可扩展性对象的实例来使用外部的用户定义类。
这是什么意思?
感谢。
答案 0 :(得分:2)
类文字类似于String.class
,即表示String
类的编译时文字。
简而言之,反射是一种语言功能,允许您“反映”代码,即您可以在系统中查询类,方法,字段等,并使用该数据创建新实例,调用方法或更改字段的价值。
反射可能对创建在编译时未知但在运行时位于类路径上的类的对象很有用。几个扩展框架使用它,主要是通过在某个文本文件中提供完全限定的类名(例如com.acme.SomeFancyClass
),从类加载器获取关联的Class
对象并创建新实例。
其他框架(例如Apache Common的构建器对象,OGNL,Java Bean等)使用反射来查询可访问的可用属性(getter和/或匹配setter)(通过调用这些getter / setter)。 p>
但是,如果您不熟悉Java,我建议您先深入了解其他语言功能,然后再深入反思设施。