lucene4 codec反射

2024-05-07 12:18
文章标签 反射 codec lucene4

本文主要是介绍lucene4 codec反射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Lucene4 的codec通过反射加载相应的类。
与反射相关的信息放到了lucene的jar文件的META-INF\services目录下。
相关代码在NamedSPILoader.java中
某些特殊项目需要去掉codec的反射机制,修改这个函数即可(4.5.0版本)。修改之后,不需要META-INF\services。

  public synchronized void reload(ClassLoader classloader) {final LinkedHashMap<String,S> services = new LinkedHashMap<String,S>(this.services);final SPIClassIterator<S> loader = SPIClassIterator.get(clazz, classloader);if(clazz.getSimpleName().equals("PostingsFormat")) {services.put("Lucene40", (S) new Lucene40PostingsFormat());services.put("Lucene41", (S) new Lucene41PostingsFormat());}else if(clazz.getSimpleName().equals("DocValuesFormat")) {services.put("Lucene42", (S) new Lucene42DocValuesFormat());services.put("Lucene45", (S) new Lucene45DocValuesFormat());}else if(clazz.getSimpleName().equals("Codec")) {services.put("Lucene40", (S) new Lucene40Codec());services.put("Lucene41", (S) new Lucene41Codec());services.put("Lucene42", (S) new Lucene42Codec());services.put("Lucene45", (S) new Lucene45Codec());services.put("Lucene3x", (S) new Lucene3xCodec());}this.services = Collections.unmodifiableMap(services);}


这篇关于lucene4 codec反射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967323

相关文章

【反射知识点详解】

Java中的反射(Reflection)是一个非常强大的机制,它允许程序在运行时检查或修改类的行为。这种能力主要通过java.lang.reflect包中的类和接口来实现。 通过反射,Java程序可以动态地创建对象、调用方法、访问字段,以及获取类的各种信息(如构造器、方法、字段等)。 反射的用途 反射主要用于以下几种情况: 动态创建对象:通过类的Class对象动态地创建其实例。访问类的字段

Go 在orm中使用反射

作为静态语言,golang 稍显笨拙,还好 go 的标准包reflect(反射)包弥补了这点不足,它提供了一系列强大的 API,能够根据执行过程中对象的类型来改变程序控制流。本文将通过设计并实现一个简易的 mysql orm 来学习它,要求读者了解mysql基本知识,并且跟我一样至少已经接触 golang 两到三个月。 orm 这个概念相信同学们都非常熟悉,尤其是写过rails的同学,对acti

类型信息:反射-Class

在说反射前提一个概念:RTTI(在运行时,识别一个对象的类型) public class Shapes {public static void main(String[] args) {List<Shape> shapes = Arrays.asList(new Circle(), new Square(), new Triangle());for (Shape shape : shapes

单例模式以及反射对单例模式的破坏及防御

单例模式(Singleton Pattern)是一种确保类在应用程序生命周期内只存在一个实例的设计模式。它不仅提供了全局访问点,还能节省内存、控制实例的生命周期。但常见的单例模式实现方式如饿汉式、懒汉式、双重校验锁、静态内部类等,虽然设计良好,但都容易被 Java 的反射机制所破坏。本文将介绍这些单例实现方式的优缺点、反射如何破坏它们的唯一性,以及如何防御这种破坏。 1. 单例模式的常见实现

servlet用反射代替if..else

String methodName = request.getParameter("method"); Method method = this.getClass().getDeclaredMethod(methodName,HttpServletRequest.class, HttpServletResponse.class); method.invoke(this, request, re

Redis缓存 自定义注解+aspect+反射技术实现

最近再给云随笔后台增加redis模块,突然发现spring-boot-starter-data-redis模块很不人性化,实现不了通用的方式,(当然,你也可以自己写个通用的CacheUtil来实现通用的方式),但由于本人非常的爱装逼,就在这里不讲解那种傻瓜式操作了,这里只讲干货,干到你不可置信的干货). 例如:这里我使用了它其中的RedisTemplate ,发现存到redis中后,数据

JAVA反射使用父类的非public方法(getMethods()和getDeclaredMethods()区别)

getMethods()和getDeclaredMethods()区别 虽然是老生常谈了,但是还是要先说一下两者的区别。 getMethods():能够获取类的所有public方法,包括自身定义的以及从父类继承的。 getDeclaredMethods():能够获取类本身的所有方法,包括private方法,实现的接口方法,但是不能获取从父类继承的非public方法。 因此getDeclaredM

【python 编码问题】UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not

插入oracle 数据发生 错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 131-136: ordinal not in range(128) 先说解决办法: python2.7版本,在开头加入下面语句 import sysreload(sys)sys.setdefaultencoding

Java反射机制讲解

Java反射机制详解 Java反射机制是Java语言的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这意味着可以动态地创建对象、调用方法、访问字段等。 1. 反射的基本概念 反射主要是指运行时能够“反观”自己,并且可以直接操作对象的结构(类、字段、方法等)。Java反射的主要功能包括: 获取Class对象创建对象实例获取和设置字段值调用方法获取构造器

反射: 获取变量类型

更高级的编程语言,提供反射、解释机制,获取对象类型非常方便,因为运行时保存有对象的全部信息,也包括类型,而对于编译型语言而言,变量类型要靠编译期或构造/依赖类型某个存储类型的结构。 不同语言的反射 C++ typeid编译器编译时可以确定某些无多态的变量对象类型,无需额外结构辅助。对于有多态行为的类对象,编译器利用vtable内指向对应类型的type_info, 运行期可通过vtable获