A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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 呢?请高手解答

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
本帖最后由 黑马—陈磊 于 2012-6-1 18:55 编辑

getClassName() 是获取某个类名一个方法
一般可以得到 某个类名字
com只是对象引用
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
LZ,
getName()返回的是类名或者接口名,参见API中类Class的方法!
回复 使用道具 举报
返回的时这个类的名称不是这里形参
回复 使用道具 举报
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.
回复 使用道具 举报
这是API的资料,自己读读就明白了,getclass()获得类的是class对象,不是实例
回复 使用道具 举报
谢谢,我懂了
回复 使用道具 举报
com是对象的名字。
回复 使用道具 举报
com是对象的名字。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马