首先介绍一下Java中枚举实现:
public enum Color{
RED,BLUE,BLACK,YELLOW,GREEN
}
显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法
我们可以如下定义枚举常量(实质是一个类对象)
4. public static final enum hr.test.Color RED;
5. public static final enum hr.test.Color BLUE;
6. public static final enum hr.test.Color BLACK;
7. public static final enum hr.test.Color YELLOW;
8. public static final enum hr.test.Color GREEN;
即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。但是,枚举类的构造器有很大的不同:
(1) 构造器只是在构造枚举值的时候被调用。
Java代码 1.enum Color{
2. RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);
3. //构造枚举值,比如RED(255,0,0)
4. private Color(int rv,int gv,int bv){
5. this.redValue=rv;
6. this.greenValue=gv;
7. this.blueValue=bv;
8. }
9.
10. public String toString(){ //覆盖了父类Enum的toString()
11. return super.toString()+"("+redValue+","+greenValue+","+blueValue+")";
12. }
13.
14. private int redValue; //自定义数据域,private为了封装。
15. private int greenValue;
16. private int blueValue;
17. }
(2) 构造器只能私有private,绝对不允许有public构造器。 这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 但枚举类的方法和数据域可以允许外部访问。
Java代码 1.public static void main(String args[])
2.{
3. // Color colors=new Color(100,200,300); //wrong
4. Color color=Color.RED;
5. System.out.println(color); // 调用了toString()方法
6.}
3、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法。
(1) ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。
Color.RED.ordinal(); //返回结果:0
Color.BLUE.ordinal(); //返回结果:1
(2) compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。(具体可见源代码)
Color.RED.compareTo(Color.BLUE); //返回结果 -1
(3) values()方法: 静态方法,返回一个包含全部枚举值的数组。
Color[] colors=Color.values();
for(Color c:colors){
System.out.print(c+",");
}//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
(4) toString()方法: 返回枚举常量的名称。
Color c=Color.RED;
System.out.println(c);//返回结果: RED
(5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量。
Color.valueOf("BLUE"); //返回结果: Color.BLUE
(6) equals()方法: 比较两个枚举类对象的引用
lucene的Version定义在org.apache.lucene.util内:
LUCENE_20表示lucene 2.0
LUCENE_35表示lucene 3.5
package org.apache.lucene.util;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Use by certain classes to match version compatibility
* across releases of Lucene.
*
* <p><b>WARNING</b>: When changing the version parameter
* that you supply to components in Lucene, do not simply
* change the version at search-time, but instead also adjust
* your indexing code to match, and re-index.
*/
// remove me when java 5 is no longer supported
// this is a workaround for a JDK bug that wrongly emits a warning.
@SuppressWarnings("dep-ann")
public enum Version {
/** Match settings and bugs in Lucene's 2.0 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_20,
/** Match settings and bugs in Lucene's 2.1 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_21,
/** Match settings and bugs in Lucene's 2.2 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_22,
/** Match settings and bugs in Lucene's 2.3 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_23,
/** Match settings and bugs in Lucene's 2.4 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_24,
/** Match settings and bugs in Lucene's 2.9 release.
* @deprecated (3.1) Use latest
*/
@Deprecated
LUCENE_29,
/** Match settings and bugs in Lucene's 3.0 release. */
LUCENE_30,
/** Match settings and bugs in Lucene's 3.1 release. */
LUCENE_31,
/** Match settings and bugs in Lucene's 3.2 release. */
LUCENE_32,
/** Match settings and bugs in Lucene's 3.3 release. */
LUCENE_33,
/** Match settings and bugs in Lucene's 3.4 release. */
LUCENE_34,
/**
* Match settings and bugs in Lucene's 3.5 release.
* <p>
* Use this to get the latest & greatest settings, bug
* fixes, etc, for Lucene.
*/
LUCENE_35,
/* Add new constants for later versions **here** to respect order! */
/**
* <p><b>WARNING</b>: if you use this setting, and then
* upgrade to a newer release of Lucene, sizable changes
* may happen. If backwards compatibility is important
* then you should instead explicitly specify an actual
* version.
* <p>
* If you use this constant then you may need to
* <b>re-index all of your documents</b> when upgrading
* Lucene, as the way text is indexed may have changed.
* Additionally, you may need to <b>re-test your entire
* application</b> to ensure it behaves as expected, as
* some defaults may have changed and may break functionality
* in your application.
* @deprecated Use an actual version instead.
*/
@Deprecated
LUCENE_CURRENT;
public boolean onOrAfter(Version other) {
return compareTo(other) >= 0;
}
}
上述代码中,源代码标记@Deprecated是在JDK1.5中作为内置的annotation引入的,用于表明类(class)、方法(method)、字段(field)已经不再推荐使用,并且在以后的JDK版本中可能将其删除,编译器在默认情况下检测到有此标记的时候会提示警告信息。
在后述版本中
@Deprecated
LUCENE_29
2.9及以前版本的可能会被删除
分享到:
相关推荐
这个压缩包包含了十几个与Lucene相关的JAR文件,这些文件分别对应于不同的Lucene组件和版本,用于实现不同的功能。让我们逐一解析这些文件及其在Lucene中的作用。 1. **lukeall-4.7.1.jar**:Luke是Lucene的可视化...
本文将详细介绍“lucene所有的jar包”,特别是其中的“my的jar”和“ik的jar包”,以及它们在Lucene 4.9.0版本中的作用和使用方法。 一、Lucene简介 Lucene是Apache软件基金会的一个开放源代码项目,它提供了一个...
Lucene是一个高性能、全文检索库,它是Java编写的一个开源项目,被广泛应用于各种版本的Java开发环境中,以实现高效、灵活的索引和搜索功能。Lucene的核心特性包括文本分析、索引构建、查询解析、排序以及结果评分等...
在这个“lucene完整包”中,`lucene-1.9.1` 版本可能是早期的 Lucene 发行版。虽然版本较旧,但对于理解 Lucene 的基本原理和操作仍然是有价值的。随着 Lucene 不断发展,后续的版本引入了更多特性,如更先进的分词...
《Lucene分词技术与IKAnalyzer详解》 在信息技术领域,搜索引擎是不可或缺的一部分,而Lucene作为Apache软件基金会的一个开放源代码项目,是Java语言开发的全文检索引擎库,为构建高效、可扩展的信息检索应用提供了...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
本资源提供了从2.0到4.1等多个版本的Lucene JAR包,涵盖了一个时期的版本发展,这对于开发者进行版本兼容性测试、学习历史版本特性和功能,或者针对不同项目需求选择合适版本具有重要意义。 1. **Lucene 2.0**: ...
【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...
"Lucene的- 3.0.3.zip.ZIP"可能是Lucene 3.0.3版本的源码或二进制包,可供开发者下载研究和使用。 总之,Lucene是一个强大的搜索工具,通过学习《Lucene in Action》并实践使用Lucene 3.30,开发者能够构建高效、...
在本压缩包中,包含了Lucene的最新版本——4.10.2的所有相关jar包,总计59个,这些jar包构成了Lucene的核心组件以及各种扩展模块。 首先,我们来看看核心组件`lucene-core-4.10.2.jar`。这个包是Lucene的基础,包含...
9. **社区与版本**:Lucene历经多个版本的迭代,目前最新的稳定版已经发展到8.x,拥有强大的社区支持,不断有新的特性和优化加入。 10. **应用场景**:Lucene广泛应用于各种需要全文搜索的场景,如网站搜索、日志...
**Lucene jar包详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"lucene_jar包"包含了Lucene的核心组件,是开发者构建搜索功能的基础。在Java开发环境中,jar(Java Archive)包是将...
在这个压缩包中,你将获得Lucene 2.3.2版本的全部源码,这将有助于深入理解其内部工作原理以及进行自定义开发。 源码分析: Lucene 的源码分为几个主要部分,包括分析(Analyzer)、索引(Index)、查询(Query)、...
**Lucene 开发包详解** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。这个开发包包含了两个版本:lucene-1.4.3 和 lucene-1.4.1,分别代表了 Lucene 的不同迭代阶段,它们为开发者提供了...
7.7.2 版本是 Lucene 的一个重要稳定版本,它在前一版本的基础上进行了多项改进和优化,为开发者提供了更强大、更稳定的搜索解决方案。 1. **全文检索核心**: Lucene 的核心在于其强大的全文检索能力。它能够对...
在此次提供的"工具包Lucene2.4.1"中,我们聚焦于这个相对较新的版本(相对于发布时)的特性、功能和使用方法。 **一、Lucene简介** Lucene的核心功能是实现文本的索引和搜索,它提供了一个高级的、灵活的、可扩展的...
lucene-highlighter-3.5.0.jar lucene高亮包
Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中实现复杂的搜索功能。 首先,Lucene的核心功能包括分词、索引和搜索。分词是将输入的文本拆分成可搜索的单词或...