黑马程序员技术交流社区

标题: 输出结果是:Company,为什么不是com 呢? [打印本页]

作者: 杨海波    时间: 2012-6-1 18:49
标题: 输出结果是:Company,为什么不是com 呢?
interface ClassName
{ public String getClassName();
}
class Company implements ClassName
{ public String getClassName(){
      return this.getClass().getName();
}
}
public class tao
{public static void main(String args[]){
  Company com=new Company();
  System.out.println(com.getClassName());
}
}
输出结果是:Company,为什么不是com 呢?请高手解答
作者: 黑马—陈磊    时间: 2012-6-1 18:53
本帖最后由 黑马—陈磊 于 2012-6-1 18:55 编辑

getClassName() 是获取某个类名一个方法
一般可以得到 某个类名字
com只是对象引用

作者: 袁錦泰    时间: 2012-6-1 19:05
  1. interface ClassName {
  2.         public String getClassName();
  3. }

  4. class Company implements ClassName {
  5.         public String getClassName() {
  6.                 return this.getClass().getName();//获取的是引用所属类的名称
  7.         }
  8. }

  9. public class tao {
  10.         public static void main(String args[]) {
  11.                 Company com = new Company();
  12.                 System.out.println(com.getClassName());//打印com引用所属类的名字-->Company
  13.         }
  14. }
复制代码

作者: 朝哥    时间: 2012-6-1 19:29
LZ,
getName()返回的是类名或者接口名,参见API中类Class的方法!
作者: 江南    时间: 2012-6-1 20:26
返回的时这个类的名称不是这里形参

作者: 张天天    时间: 2012-6-1 21:21
getClasses
public Class<?>[] getClasses()
Returns an array containing Class objects representing all the public classes and interfaces that are members of the class represented by this Class object. This includes public class and interface members inherited from superclasses and public class and interface members declared by the class. This method returns an array of length 0 if this Class object has no public member classes or interfaces. This method also returns an array of length 0 if this Class object represents a primitive type, an array class, or void.

Returns:
the array of Class objects representing the public members of this class
Throws:
SecurityException - If a security manager, s, is present and any of the following conditions is met:
invocation of s.checkMemberAccess(this, Member.PUBLIC) method denies access to the classes within this class
the caller's class loader is not the same as or an ancestor of the class loader for the current class and invocation of s.checkPackageAccess() denies access to the package of this class
Since:
JDK1.1
getName
public String getName()
Returns the name of the entity (class, interface, array class, primitive type, or void) represented by this Class object, as a String.
If this class object represents a reference type that is not an array type then the binary name of the class is returned, as specified by the Java Language Specification, Second Edition.

If this class object represents a primitive type or void, then the name returned is a String equal to the Java language keyword corresponding to the primitive type or void.

If this class object represents a class of arrays, then the internal form of the name consists of the name of the element type preceded by one or more '[' characters representing the depth of the array nesting. The encoding of element type names is as follows:

Element Type       Encoding  
boolean       Z  
byte       B  
char       C  
class or interface       Lclassname;  
double       D  
float       F  
int       I  
long       J  
short       S  

The class or interface name classname is the binary name of the class specified above.

Examples:

String.class.getName()
     returns "java.lang.String"
byte.class.getName()
     returns "byte"
(new Object[3]).getClass().getName()
     returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
     returns "[[[[[[[I"


Returns:
the name of the class or interface represented by this object.

作者: 张天天    时间: 2012-6-1 21:23
这是API的资料,自己读读就明白了,getclass()获得类的是class对象,不是实例
作者: 杨海波    时间: 2012-6-1 21:39
谢谢,我懂了
作者: 赵志勇    时间: 2012-6-1 22:03
com是对象的名字。
作者: 赵志勇    时间: 2012-6-1 22:03
com是对象的名字。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2