Bre*_*min 9 java object tostring
以下是JavaDoc所说的内容:
Run Code Online (Sandbox Code Playgroud)public final Class <?> getClass()返回此运行时类
Object.返回的Class对象是由static synchronized所表示的类的方法锁定的对象.
实际结果的类型是Class<? extends |X|>其中|X|是静态类型上其表达的擦除getClass被调用.例如,此代码片段中不需要强制转换:Run Code Online (Sandbox Code Playgroud)Number n = 0; Class<? extends Number> c = n.getClass();返回:
表示此对象的运行时类的Class对象.
现在,我知道它是一个本机方法,因此它是在依赖于平台的代码中实现的.但是这种方法的返回类型呢?
public final Class<?> getClass()
Run Code Online (Sandbox Code Playgroud)
另外,请考虑以下代码:
class Dog
{
@Override
public String toString()
{
return "cat";
}
}
public class Main
{
public static void main(String[] args)
{
Dog d= new Dog();
//Class<Dog> dd = new Dog(); Compile time error
System.out.println(d.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
班狗
所以,我的疑问在于:
The data for each object contains a reference to an object of class java.lang.Class, and this is returned by the method getClass. There is also one java.lang.Class object describing java.lang.Class.
Think of a Class object as the "blueprint" describing a certain class from which objects are being made. It stands to reason that blueprints also need a blueprint of their own (or else how would engineers know how to make blueprints).
These statements try to illustrate this.
Integer integer = 1;
Class<?> clazzInteger = integer.getClass();
System.out.println( "class of integer=" + clazzInteger );
Class<?> clazzClazzInteger = clazzInteger.getClass();
System.out.println( "class of class Integer's class=" + clazzClazzInteger );
String string = "x";
Class<?> clazzString = string.getClass();
System.out.println( "class of string=" + clazzString );
Class<?> clazzClazzString = clazzString.getClass();
System.out.println( "class of class String's class=" + clazzClazzString );
Run Code Online (Sandbox Code Playgroud)
Output:
class of integer=class java.lang.Integer
class of class Integer's class=class java.lang.Class
class of string=class java.lang.String
class of class String's class=class java.lang.Class
Run Code Online (Sandbox Code Playgroud)
类有一个名称,就像蓝图描述的任何名称一样,不要与蓝图本身混淆.如果类对象出现在某个上下文中,则会隐式调用其toString()方法,并返回类的名称.如果您想要打印类的所有细节(类似于打印蓝图本身),您必须编写大量代码 - 只需查看java.lang.Class的javadoc:有一个糟糕的要检索的大量信息(如蓝图所示).
| 归档时间: |
|
| 查看次数: |
20318 次 |
| 最近记录: |