# PropertyPath.PathSegment

Artifact: [androidx.appsearch:appsearch](https://developer.android.com/jetpack/androidx/releases/appsearch) [View Source](https://cs.android.com/search?q=file:androidx/appsearch/app/PropertyPath.java+class:androidx.appsearch.app.PropertyPath.PathSegment) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

*** ** * ** ***


```
public class PropertyPath.PathSegment
```

<br />

*** ** * ** ***

A segment of a PropertyPath, which includes the name of the property and a 0-based index into this property.

If the property index is not set to `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY()`, this represents a schema property with the "repeated" cardinality, or a path like "foo\[1\]". Otherwise, this represents a schema property that could have any cardinality, or a path like "foo".

## Summary

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY() = -1` A marker variable to signify that a PathSegment represents a schema property that isn't indexed into. |

| ### Public methods |
|---|---|
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#create(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html propertyName)` Creation method that accepts and validates a property name |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#create(java.lang.String,int)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html propertyName, int propertyIndex)` Creation method that accepts and validates both a property name and the index into the property. |
| `boolean` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#equals(java.lang.Object)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html o)` |
| `int` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#getPropertyIndex()()` Returns the index into the property, or `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY()` if this does not represent a PathSegment with an index. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#getPropertyName()()` Returns the name of the property. |
| `int` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#hashCode()()` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#toString()()` Returns a path representing a PathSegment, either "foo" or "foo\[1\]" |

## Constants

### NON_REPEATED_CARDINALITY

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
public static final int NON_REPEATED_CARDINALITY = -1
```

A marker variable to signify that a PathSegment represents a schema property that isn't indexed into. The value is chosen to be invalid if used as an array index.

## Public methods

### create

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
public static @NonNull PropertyPath.PathSegment create(@NonNull String propertyName)
```

Creation method that accepts and validates a property name

The property index is set to `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY()`

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html propertyName` | the name of the property |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment` | A new PathSegment |

### create

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
public static @NonNull PropertyPath.PathSegment create(@NonNull String propertyName, int propertyIndex)
```

Creation method that accepts and validates both a property name and the index into the property.

The property name may not be blank. It also may not contain square brackets or dots, as they are control characters in property paths. The index into the property may not be negative, unless it is `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY()`, as these are invalid array indices.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html propertyName` | the name of the property |
| `int propertyIndex` | the index into the property |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment` | A new PathSegment |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the property name or index is invalid. |

### equals

```
public boolean equals(@Nullable Object o)
```

### getPropertyIndex

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
public int getPropertyIndex()
```

Returns the index into the property, or `https://developer.android.com/reference/androidx/appsearch/app/PropertyPath.PathSegment#NON_REPEATED_CARDINALITY()` if this does not represent a PathSegment with an index.

### getPropertyName

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
public @NonNull String getPropertyName()
```

Returns the name of the property.

### hashCode

```
public int hashCode()
```

### toString

```
public @NonNull String toString()
```

Returns a path representing a PathSegment, either "foo" or "foo\[1\]"