1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.annotation;
17 
18 import java.lang.annotation.Retention;
19 import java.lang.annotation.Target;
20 
21 import static java.lang.annotation.ElementType.FIELD;
22 import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
23 import static java.lang.annotation.ElementType.METHOD;
24 import static java.lang.annotation.ElementType.PARAMETER;
25 import static java.lang.annotation.RetentionPolicy.SOURCE;
26 
27 /**
28  * Denotes that the annotated element should have a given size or length.
29  * Note that "-1" means "unset". Typically used with a parameter or
30  * return value of type array or collection.
31  * <p>
32  * Example:
33  * <pre>{@code
34  *  public void getLocationInWindow(@Size(2) int[] location) {
35  *      ...
36  *  }
37  * }</pre>
38  *
39  * @hide
40  */
41 @Retention(SOURCE)
42 @Target({PARAMETER,LOCAL_VARIABLE,METHOD,FIELD})
43 public @interface Size {
44     /** An exact size (or -1 if not specified) */
value()45     long value() default -1;
46     /** A minimum size, inclusive */
min()47     long min() default Long.MIN_VALUE;
48     /** A maximum size, inclusive */
max()49     long max() default Long.MAX_VALUE;
50     /** The size must be a multiple of this factor */
multiple()51     long multiple() default 1;
52 }