com.google.gwt.emul.java.lang.Class Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vaadin-client Show documentation
Show all versions of vaadin-client Show documentation
Vaadin is a web application framework for Rich Internet Applications (RIA).
Vaadin enables easy development and maintenance of fast and
secure rich web
applications with a stunning look and feel and a wide browser support.
It features a server-side architecture with the majority of the logic
running
on the server. Ajax technology is used at the browser-side to ensure a
rich
and interactive user experience.
/*
* Copyright 2006 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 java.lang;
import com.google.gwt.core.client.JavaScriptObject;
/**
* Generally unsupported. This class is provided so that the GWT compiler can
* choke down class literal references.
*
* @param the type of the object
*/
public final class Class {
private static final int PRIMITIVE = 0x00000001;
private static final int INTERFACE = 0x00000002;
private static final int ARRAY = 0x00000004;
private static final int ENUM = 0x00000008;
static native String asString(int number) /*-{
// for primitives, the seedId isn't a number, but a string like ' Z'
return typeof(number) == 'number' ? "S" + (number < 0 ? -number : number) : number;
}-*/;
/**
* Create a Class object for an array.
*
* @skip
*/
static Class createForArray(String packageName, String className,
int seedId, Class> componentType) {
// Initialize here to avoid method inliner
Class clazz = new Class();
setName(clazz, packageName, className, seedId != 0 ? -seedId : 0);
clazz.modifiers = ARRAY;
clazz.superclass = Object.class;
clazz.componentType = componentType;
return clazz;
}
/**
* Create a Class object for a class.
*
* @skip
*/
static Class createForClass(String packageName, String className,
int seedId, Class super T> superclass) {
// Initialize here to avoid method inliner
Class clazz = new Class();
setName(clazz, packageName, className, seedId);
clazz.superclass = superclass;
return clazz;
}
/**
* Create a Class object for an enum.
*
* @skip
*/
static Class createForEnum(String packageName, String className,
int seedId, Class super T> superclass,
JavaScriptObject enumConstantsFunc, JavaScriptObject enumValueOfFunc) {
// Initialize here to avoid method inliner
Class clazz = new Class();
setName(clazz, packageName, className, seedId);
clazz.modifiers = (enumConstantsFunc != null) ? ENUM : 0;
clazz.superclass = clazz.enumSuperclass = superclass;
clazz.enumConstantsFunc = enumConstantsFunc;
clazz.enumValueOfFunc = enumValueOfFunc;
return clazz;
}
/**
* Create a Class object for an interface.
*
* @skip
*/
static Class createForInterface(String packageName, String className) {
// Initialize here to avoid method inliner
Class clazz = new Class();
setName(clazz, packageName, className, 0);
clazz.modifiers = INTERFACE;
return clazz;
}
/**
* Create a Class object for a primitive.
*
* @skip
*/
static Class> createForPrimitive(String packageName, String className,
int seedId) {
// Initialize here to avoid method inliner
Class> clazz = new Class