首页 > 试题广场 >

cn.test包中Person类定义如下,下列哪些方法可以获

[不定项选择题]
cn.test包中Person类定义如下,下列哪些方法可以获取class对象(      )
class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}
  • Person p = new Person();
    Class c = p.getClass();
  • Class c = Person.class;
  • Class c = Person.Class;
  • Class c4 = Class.forName("cn.test");
这答案也太扯了,ACD明显是错的,以下结论均自己在IDE中验证过:
首先A选项不对,这个类连个无参构造器都没有。Person p = new Person()根本不可能编译通过。
用反射获取class对象的话,常用的有三种方法:
1. Class clazz = Person.class;
2. Person p = new Person("NiuKeWoShiNiDaYe");
   Class clazz = str.getClass();
3. Class clazz = Class.forName("cn.test.Person");
再加的话顶多还有一种用类加载器的方法来获取:
ClassLoader classLoader = Person.class.getClassLoader();
classLoader.loadClass("cn.test.Person");
C选项.Class  C不应该是大写的
D选项,人家forName里面的参数应该是包名.类名,答案里面只写到了包名
总之我觉得应该选B

编辑于 2021-08-25 16:23:47 回复(1)
编译器 获取到的是小写 class **错题
发表于 2021-11-04 15:33:30 回复(0)
AB,C选项class是静态属性,小写不是大写D选项是全限限名
发表于 2021-08-30 19:03:38 回复(2)