如何查看包含实际代码的类名

时间:2016-11-02 11:48:01

标签: java

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

-

package a;
public class A {
  public String toString() {
    // return "I am an a.A"; is too primitive ;) 
    return "I am an " + getClass().getName(); // should give "a.A"
  }
}

我还尝试了package a; public class X extends A { public static void main(String[] args) { X test = new X(); System.out.println(test); // returns "I am an a.X" } } this.getClass()。如何获取实际编码toString()和getClass()的类名? (A.A)

这只是一个简化的示例,我的观点是如何避免在第一个文件(A.java)中对基类名称进行硬编码

3 个答案:

答案 0 :(得分:5)

package a;
public class A {
  public String toString() {
    return "I am an " + A.class.getName();
  }
}

应该这样做。

答案 1 :(得分:1)

只是迭代所有超级

public String toString() {
  Class cl = getClass();
  while (cl.getSuperclass() != Object.class) 
    cl = cl.getSuperclass();
  return cl.getName();
}

答案 2 :(得分:1)

更改:

getClass().getName()

进入

A.class.getName()