Package org.apache.lucene.util

# Class AttributeFactory

java.lang.Object
org.apache.lucene.util.AttributeFactory

Direct Known Subclasses:
  `AttributeFactory.StaticImplementationAttributeFactory`

public abstract class AttributeFactory extends Object
An AttributeFactory creates instances of `AttributeImpl`s.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`AttributeFactory.StaticImplementationAttributeFactory<A extends AttributeImpl>`
Expert: AttributeFactory returning an instance of the given `clazz` for the attributes it implements.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final AttributeFactory`
`DEFAULT_ATTRIBUTE_FACTORY`
This is the default factory that creates `AttributeImpl`s using the class name of the supplied `Attribute` interface class by appending `Impl` to it.

## Constructor Summary

Constructors
Constructor
Description
`AttributeFactory()`

## Method Summary

Modifier and Type
Method
Description
`abstract AttributeImpl`
`createAttributeInstance(Class<? extends Attribute> attClass)`
Returns an `AttributeImpl` for the supplied `Attribute` interface class.
`static <A extends AttributeImpl>
AttributeFactory`
`getStaticImplementation(AttributeFactory delegate, Class<A> clazz)`
Returns an AttributeFactory returning an instance of the given `clazz` for the attributes it implements.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEFAULT_ATTRIBUTE_FACTORY

public static final AttributeFactory DEFAULT_ATTRIBUTE_FACTORY
This is the default factory that creates `AttributeImpl`s using the class name of the supplied `Attribute` interface class by appending `Impl` to it.

## Constructor Details

### AttributeFactory

public AttributeFactory()

## Method Details

### createAttributeInstance

public abstract AttributeImpl createAttributeInstance(Class<? extends Attribute> attClass) throws UndeclaredThrowableException
Returns an `AttributeImpl` for the supplied `Attribute` interface class.

Throws:
  `UndeclaredThrowableException` - A wrapper runtime exception thrown if the constructor of the attribute class throws a checked exception. Note that attributes should not throw or declare checked exceptions; this may be verified and fail early in the future.

### getStaticImplementation

public static <A extends AttributeImpl> AttributeFactory getStaticImplementation(AttributeFactory delegate, Class<A> clazz)
Returns an AttributeFactory returning an instance of the given `clazz` for the attributes it implements. The given `clazz` must have a public no-arg constructor. For all other attributes it calls the given delegate factory as fallback. This method can be used to prefer a specific `AttributeImpl` which combines multiple attributes over separate classes.

Please save instances created by this method in a static final field, because on each call, this does reflection for creating a `MethodHandle`.