题目的主要信息:

  • 已知有三个类:First、Second、Third
  • 定义一个打印方法,支持传入任意引用类型的参数(包括上述三个类),并在方法内部打印出对象的字符串形式

具体做法:

因为对于定义的这三个类,返回的类型本身就是字符串类型,而其他系统的定义的类型参数也是如此,因此我们可以直接调用方法:getClass().getName(),它将以字符串的形式返回类型,直接输出即可。

alt

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());
        }
    }
    
    public static void print(Object obj){
        System.out.println(obj.getClass().getName()); //调用getName函数直接输出
    }

}

class First {
    public String toString() {
        return "First";
    }
}

class Second {
    public String toString() {
        return "Second";
    }
}

class Third {
    public String toString() {
        return "Third";
    }
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),直接调用函数输出,常数时间
  • 空间复杂度:O(1)O(1)O(1),无额外空间