题解 | #类型判断#

类型判断

http://www.nowcoder.com/practice/97223208ca954e67832da716b46e5d72

题意整理

  • 给定一个Base类,以及它的两个子类Sub1和Sub2。
  • 要求定义一个方法,传入Base类型的实例,返回其对应的简单类名。

方法一(调用instanceof)

1.解题思路

  • 通过instanceof判断对应的类型,然后将对应类型的简单类名返回。

图解展示: alt

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.复杂度分析

  • 时间复杂度:只需调用一次逻辑判断,所以时间复杂度为O(1)O(1)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务