题目
- JAVA23 定义打印方法
- 分析:
- 代码:
- JAVA24 类型判断
- 分析:
- 代码:
JAVA23 定义打印方法
描述
已知有三个类:First、Second、Third。要求定义一个打印方法,支持传入任意引用类型的参数(包括上述三个类),并在方法内部打印出对象的字符串形式。
输入描述:
类名
输出描述:
由该类实例化出来的对象的字符串表示
示例:
输入:First 输出:First
分析:
1.编写一个打印方法。
2.打印方法中调用对象的toString()方法。
3.打印方法的形参应该适配于所有对象,故设置为Object。
代码:
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();
// print就是需要你定义的方法
print(Class.forName(className).newInstance());
}
}
//write your code here......
public static void print(Object obj){
System.out.println(obj.toString());
}
}
class First {
public String toString() {
return "First";
}
}
class Second {
public String toString() {
return "Second";
}
}
class Third {
public String toString() {
return "Third";
}
}
JAVA24 类型判断
描述
父类Base有两个子类:Sub1、Sub2,现有一个方法getClassName(),要求传入Base类型的实例,在方法内部判定其具体的类型,返回的是类型的简单名字(不含包名),请补全getClassName()方法的判断逻辑。
输入描述:
输入要实例化的类名:Base、Sub1、Sub2 三者之一。
输出描述:
返回实例的实际类名(简化类名,不包含包的名字)。
示例:
输入:Sub1 输出:Sub1
输入:Sub2 输出:Sub2
输入:Base 输出:Base
分析:
1.判断对象的类型应该使用 instanceof 关键词。
代码:
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) {
//write your code here......
if(obj instanceof Sub1){
return "Sub1";
}else if(obj instanceof Sub2){
return "Sub2";
}else {
return "Base";
}
}
}
class Base {
}
class Sub1 extends Base {
}
class Sub2 extends Base {
}