2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 package gov.nasa.jpf.util;
21 import gov.nasa.jpf.vm.ClassInfo;
22 import gov.nasa.jpf.vm.ClassLoaderInfo;
25 * this is a utility construct for type references that should
26 * not cause class loading when instantiated, but cannot use a
27 * classname String because of argument type ambiguity (Strings are just
30 * TypeRefs can be used to specify both native and JPF executed (SUT) classes,
31 * it is up to the caller to use the proper access methods
33 * NOTE - loading and instantiation of TypeRefs is not allowed to cause loading of
34 * any JPF classes that are not in jpf-classes.jar
36 public class TypeRef {
39 public TypeRef (String clsName){
40 this.clsName = clsName;
43 public Class<?> getNativeClass() throws ClassNotFoundException {
44 return Class.forName(clsName);
48 * return the host VM class for this ref.
49 * This will cause native on-demand class loading
51 public <T> Class<? extends T> asNativeSubclass(Class<T> superClazz) throws ClassNotFoundException, ClassCastException {
52 Class<?> clazz = Class.forName(clsName);
53 return clazz.asSubclass(superClazz);
57 * obtain the ClassInfo (JPF class) for this ref.
58 * This will cause on-demand class loading by JPF
60 public ClassInfo getClassInfo (){
61 return ClassLoaderInfo.getCurrentResolvedClassInfo(clsName);
65 public String toString(){
66 return "TypeRef(" + clsName + ")";