内省(Introspect)是什么意思?

内省(Introspect)是什么意思?麻烦大佬通俗一点说一下,百度了一下也不是很懂。感觉和“套接字”,“鲁棒性”,“句柄”之类的词一样难以理解。

阅读 6.3k
2 个回答
retrospection: n. 回顾,回想;(过去事实等的)对证。
introspection: n. 内省,反省。

retrospectionintrospection有什么不同呢?retrospection强调的是re-这个词根,是向回看,回顾。而introspection强调的是in-这个词根,是向内看,观察自己的内心深处。

内省(英文:introspection)或内观,指的是人通过向内的检视,对自己所能了解的意识经验陈述出来。内省自古以来为西方和东方哲学家所讨论,而内省法一直是心理学家用来研究内在心理活动的主要方法之一,基本上是让被试者口述心理感受。 -- 维基百科

用在计算机方面:

内省(Introspector)Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName, setName来得到其值或者设置新的值。通过getName/setName来访问name属性,这就是默认的规则。
Java中提供了一套API用来访问某个属性的getter/setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。
一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。 -- 百度百科

举个实例来看一下:

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
...
BeanInfo beanInfo=Introspector.getBeanInfo(UserInfo.class);
PropertyDescriptor[] proDescrtptors=beanInfo.getPropertyDescriptors();
// 在这里我们就得到了这个Bean里的所有属性

从这里我们可以看到,所谓内省其实就是让Java Bean暴露出自己所有的内部属性,以供我们逐个获取或修改其内部的属性值。完整的示例可以看这里

GraphQL 自己查询自己来发现自己提供的功能,包括查询支持的字段和提交支持操作。

GraphQL 通过查询__schema字段来向 GraphQL 询问哪些类型是可用的

{
  __schema {
    types {
      name
    }
  }
}
这个功能,就是GraphQL的内省,相当于提供了丰富的接口文档。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏