All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jsinterop.base.Any Maven / Gradle / Ivy

/*
 * Copyright 2016 Google Inc.
 *
 * Licensed 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.
 *
 */
package jsinterop.base;

import javaemul.internal.annotations.UncheckedCast;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

/**
 * Abstracts 'any' type in the type system (or '*' in Closure). This is the super type of all types
 * and provides helpers for casting into subtypes that are not otherwise castable (i.e. primitives).
 *
 * 

See {@link Js#asAny(Object)} to cast an object to {@code Any}. */ @JsType(isNative = true, name = "*", namespace = JsPackage.GLOBAL) public interface Any { @JsOverlay default JsPropertyMap asPropertyMap() { return Js.asPropertyMap(this); } @JsOverlay default JsArrayLike asArrayLike() { return Js.asArrayLike(this); } @JsOverlay default Any[] asArray() { return Js.asArray(this); } @JsOverlay default String asString() { return Js.asString(this); } @JsOverlay default boolean asBoolean() { return Js.asBoolean(this); } @JsOverlay default double asDouble() { return Js.asDouble(this); } @JsOverlay default float asFloat() { return Js.asFloat(this); } @JsOverlay default long asLong() { return Js.asLong(this); } @JsOverlay default int asInt() { return Js.asInt(this); } @JsOverlay default short asShort() { return Js.asShort(this); } @JsOverlay default char asChar() { return Js.asChar(this); } @JsOverlay default byte asByte() { return Js.asByte(this); } @JsOverlay @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"}) default T cast() { return (T) this; } /** * Performs unchecked cast to lefthand-side type. You should always prefer regular casting over * this (unless you know what you are doing!). */ @JsOverlay @UncheckedCast @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"}) default T uncheckedCast() { return (T) this; } }