001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * https://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.bcel.generic; 020 021/** 022 * Denotes that an instruction may start the process of loading and resolving the referenced class in the Virtual Machine. 023 */ 024public interface LoadClass { 025 026 /** 027 * Returns the {@link ObjectType} of the referenced class or interface that may be loaded and resolved. 028 * 029 * @param cpg A ConstantPoolGen 030 * @return object type that may be loaded or null if a primitive is referenced 031 */ 032 ObjectType getLoadClassType(ConstantPoolGen cpg); 033 034 /** 035 * Returns the type associated with this instruction. LoadClass instances are always typed, but this type does not always refer to the type of the class or 036 * interface that it possibly forces to load. For example, {@link GETFIELD} would return the type of the field and not the type of the class where the field 037 * is defined. If no class is forced to be loaded, {@code null} is returned. An example for this is an {@link NEWARRAY} instruction that creates an 038 * {@code int[][]}. 039 * 040 * @param cpg A ConstantPoolGen 041 * @return the type associated with this instruction. 042 * @see #getLoadClassType(ConstantPoolGen) 043 */ 044 Type getType(ConstantPoolGen cpg); 045}