SafeVarargs
Stay organized with collections
Save and categorize content based on your preferences.
A programmer assertion that the body of the annotated method or
constructor does not perform potentially unsafe operations on its
varargs parameter. Applying this annotation to a method or
constructor suppresses unchecked warnings about a
non-reifiable variable arity (vararg) type and suppresses
unchecked warnings about parameterized array creation at call
sites.
In addition to the usage restrictions imposed by its @Target
meta-annotation, compilers are required to implement
additional usage restrictions on this annotation type; it is a
compile-time error if a method or constructor declaration is
annotated with a @SafeVarargs
annotation, and either:
- the declaration is a fixed arity method or constructor
- the declaration is a variable arity method that is neither
static
nor final
.
Compilers are encouraged to issue warnings when this annotation
type is applied to a method or constructor declaration where:
Inherited Method Summary
From interface
java.lang.annotation.Annotation
abstract
Class<? extends Annotation>
|
|
abstract
boolean
|
equals( Object obj)
Returns true if the specified object represents an annotation
that is logically equivalent to this one.
|
abstract
int
|
hashCode()
Returns the hash code of this annotation, as defined below:
The hash code of an annotation is the sum of the hash codes
of its members (including those with default values), as defined
below:
The hash code of an annotation member is (127 times the hash code
of the member-name as computed by String.hashCode() ) XOR
the hash code of the member-value, as defined below:
The hash code of a member-value depends on its type:
|
abstract
String
|
toString()
Returns a string representation of this annotation.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-07-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-07-10 UTC."],[[["\u003cp\u003e\u003ccode\u003e@SafeVarargs\u003c/code\u003e asserts that a method or constructor handles its varargs parameter safely, suppressing related unchecked warnings.\u003c/p\u003e\n"],["\u003cp\u003eIt can only be applied to \u003ccode\u003estatic\u003c/code\u003e or \u003ccode\u003efinal\u003c/code\u003e variable arity methods and constructors.\u003c/p\u003e\n"],["\u003cp\u003eWhile it suppresses warnings, \u003ccode\u003e@SafeVarargs\u003c/code\u003e doesn't guarantee type safety at runtime; potentially unsafe operations on varargs can still lead to exceptions like \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eCompilers may issue warnings if \u003ccode\u003e@SafeVarargs\u003c/code\u003e is used on methods with reifiable element types (like \u003ccode\u003eObject\u003c/code\u003e or \u003ccode\u003eString\u003c/code\u003e) or if the method contains potentially unsafe operations on the varargs array.\u003c/p\u003e\n"]]],["The `@SafeVarargs` annotation asserts that a method or constructor doesn't perform unsafe operations on its varargs parameter. It suppresses unchecked warnings about non-reifiable vararg types and parameterized array creation. This annotation is restricted to varargs methods that are either `static` or `final`. Compilers may warn if applied to reifiable types or if unsafe operations are present, like assigning incompatible types to vararg array elements, which can lead to runtime exceptions. Future updates might mandate errors for such unsafe practices.\n"],null,[]]