Class Js


  • public final class Js
    extends java.lang.Object
    Utilities to provide access to JavaScript language constructs that are not available in pure Java.

    Note that this class avoids providing replacements for stuff that is already available via a pure Java or Elemental and enforce safe (runtime-checked) coding practices.

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static <T extends @Nullable java.lang.Object>
      T
      andAlso​(T obj1, T obj2)
      Applies JavaScript logical "and" operator (&&) on given objects.
      static JsArrayLike<@Nullable java.lang.Object> arguments()  
      static @Nullable Any asAny​(@Nullable java.lang.Object obj)  
      static @Nullable Any[] asArray​(java.lang.Object obj)  
      static @Nullable JsArrayLike<@Nullable java.lang.Object> asArrayLike​(@Nullable java.lang.Object obj)
      Returns JsArrayLike view of provided array-like object.
      static boolean asBoolean​(java.lang.Object obj)  
      static byte asByte​(java.lang.Object obj)  
      static char asChar​(java.lang.Object obj)  
      static <T> JsConstructorFn<T> asConstructorFn​(java.lang.Class<T> clazz)  
      static double asDouble​(java.lang.Object obj)  
      static float asFloat​(java.lang.Object obj)  
      static int asInt​(java.lang.Object obj)  
      static long asLong​(java.lang.Object obj)  
      static @Nullable JsPropertyMap<@Nullable java.lang.Object> asPropertyMap​(@Nullable java.lang.Object obj)
      Returns JsPropertyMap view of provided object.
      static short asShort​(java.lang.Object obj)  
      static java.lang.String asString​(java.lang.Object obj)  
      static <T extends @Nullable java.lang.Object>
      T
      cast​(@Nullable java.lang.Object obj)
      Performs checked cast to lefthand-side type.
      static boolean coerceToBoolean​(@Nullable java.lang.Object b)
      Coerces any object to boolean using !! operation.
      static double coerceToDouble​(@Nullable java.lang.Object d)
      Coerces any object to number using + operation.
      static int coerceToInt​(@Nullable java.lang.Object d)
      Coerces any object to 32 bit signed number using |0 operation.
      static void debugger()  
      static JsPropertyMap<@Nullable java.lang.Object> global()  
      static boolean isFalsy​(@Nullable java.lang.Object obj)  
      static boolean isTripleEqual​(@Nullable java.lang.Object o1, @Nullable java.lang.Object o2)
      Returns true if two objects are same.
      static boolean isTruthy​(@Nullable java.lang.Object obj)  
      static <T extends @Nullable java.lang.Object>
      T
      orElse​(T obj1, T obj2)
      Applies JavaScript logical "or" operator (||) on given objects.
      static java.lang.String typeof​(@Nullable java.lang.Object obj)  
      static <T extends @Nullable java.lang.Object>
      T
      uncheckedCast​(@Nullable java.lang.Object obj)
      Performs unchecked cast to lefthand-side type.
      static @Nullable java.lang.Object undefined()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • undefined

        @JsProperty(namespace="<window>",
                    name="undefined")
        public static @Nullable java.lang.Object undefined()
      • arguments

        @JsProperty(namespace="<window>",
                    name="arguments")
        public static JsArrayLike<@Nullable java.lang.Object> arguments()
      • debugger

        @JsProperty(namespace="<window>",
                    name="debugger")
        public static void debugger()
      • typeof

        @JsMethod(namespace="<window>")
        public static java.lang.String typeof​(@Nullable java.lang.Object obj)
      • global

        public static JsPropertyMap<@Nullable java.lang.Object> global()
      • asConstructorFn

        public static <T> JsConstructorFn<T> asConstructorFn​(java.lang.Class<T> clazz)
      • asAny

        public static @Nullable Any asAny​(@Nullable java.lang.Object obj)
      • asPropertyMap

        public static @Nullable JsPropertyMap<@Nullable java.lang.Object> asPropertyMap​(@Nullable java.lang.Object obj)
        Returns JsPropertyMap view of provided object.
      • asArrayLike

        public static @Nullable JsArrayLike<@Nullable java.lang.Object> asArrayLike​(@Nullable java.lang.Object obj)
        Returns JsArrayLike view of provided array-like object.
      • asArray

        public static @Nullable Any[] asArray​(java.lang.Object obj)
      • asString

        public static java.lang.String asString​(java.lang.Object obj)
      • asBoolean

        public static boolean asBoolean​(java.lang.Object obj)
      • asDouble

        public static double asDouble​(java.lang.Object obj)
      • asFloat

        public static float asFloat​(java.lang.Object obj)
      • asLong

        public static long asLong​(java.lang.Object obj)
      • asInt

        public static int asInt​(java.lang.Object obj)
      • asShort

        public static short asShort​(java.lang.Object obj)
      • asChar

        public static char asChar​(java.lang.Object obj)
      • asByte

        public static byte asByte​(java.lang.Object obj)
      • cast

        public static <T extends @Nullable java.lang.Object> T cast​(@Nullable java.lang.Object obj)
        Performs checked cast to lefthand-side type.

        This is useful for cases when Java won't allow you otherwise, like casting from a native interface to a final Java class (like String).

      • uncheckedCast

        public static <T extends @Nullable java.lang.Object> T uncheckedCast​(@Nullable java.lang.Object obj)
        Performs unchecked cast to lefthand-side type.

        This method exists in order to lie to the type system, it is not an optimization. You should *ALWAYS* prefer regular casting over this which also optimizes for production. Using this method can leak incorrect types to the rest of the system which will result in hard to debug problems.

      • andAlso

        public static <T extends @Nullable java.lang.Object> T andAlso​(T obj1,
                                                                       T obj2)
        Applies JavaScript logical "and" operator (&&) on given objects.
      • orElse

        public static <T extends @Nullable java.lang.Object> T orElse​(T obj1,
                                                                      T obj2)
        Applies JavaScript logical "or" operator (||) on given objects.
      • isTruthy

        public static boolean isTruthy​(@Nullable java.lang.Object obj)
      • isFalsy

        public static boolean isFalsy​(@Nullable java.lang.Object obj)
      • isTripleEqual

        public static boolean isTripleEqual​(@Nullable java.lang.Object o1,
                                            @Nullable java.lang.Object o2)
        Returns true if two objects are same.

        This method mostly behaves similar to Java == operator except that it doesn't return true for null==undefined comparison.

      • coerceToDouble

        public static double coerceToDouble​(@Nullable java.lang.Object d)
        Coerces any object to number using + operation.
      • coerceToInt

        public static int coerceToInt​(@Nullable java.lang.Object d)
        Coerces any object to 32 bit signed number using |0 operation.
      • coerceToBoolean

        public static boolean coerceToBoolean​(@Nullable java.lang.Object b)
        Coerces any object to boolean using !! operation.