题目的主要信息:
- 父类Base有两个子类:Sub1、Sub2
- 请补全方法getClassName(),要求传入Base类型的实例,在方法内部判定其具体的类型,返回的是类型的简单名字(不含包名)
具体做法:
这道题要求的是方法中返回实例的具体类型,传入的是一个实例,我们对这个实例调用getClass().getName()即可,直接返回,没什么好说的。
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) {
return obj.getClass().getName(); //直接返回
}
}
class Base {
}
class Sub1 extends Base {
}
class Sub2 extends Base {
}
复杂度分析:
- 时间复杂度:O(1),直接返回,常数时间
- 空间复杂度:O(1),无额外空间