题目
- 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 {}