题意整理
- 给定一个Base类,以及它的两个子类Sub1和Sub2。
- 要求定义一个方法,传入Base类型的实例,返回其对应的简单类名。
方法一(调用instanceof)
1.解题思路
- 通过instanceof判断对应的类型,然后将对应类型的简单类名返回。
图解展示:
2.代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String className = scanner.next();
Base obj = (Base) Class.forName(className).newInstance();
System.out.println(getClassName(obj));
}
}
public static String getClassName(Base obj) {
//如果是Sub1的实例,则返回"Sub1"
if(obj instanceof Sub1){
return "Sub1";
}
//如果是Sub2的实例,则返回"Sub2"
else if(obj instanceof Sub2){
return "Sub2";
}
//如果都不是,则返回"Base"
else{
return "Base";
}
}
}
class Base {
}
class Sub1 extends Base {
}
class Sub2 extends Base {
}
3.复杂度分析
- 时间复杂度:只需调用一次逻辑判断,所以时间复杂度为。
- 空间复杂度:不需要额外的空间,所以空间复杂度为。