java doc中提到了以下两点:
我的问题是:类方法和类变量是否属于java中的“java.lang.class”对象?
答案 0 :(得分:1)
是。 java.lang.Class的每个实例都允许访问该类的类变量和方法。
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html
答案 1 :(得分:1)
1。 Class methods
和Class variable
是类的静态成员,属于该类,他们正在由该类的所有对象共享。
2。 non-static variables and methods in a class
,属于对象。每个对象都有自己的非静态成员。
3。 java.lang.Class<T>
在正在运行的Java应用程序中代表classes
和interfaces
。
<强> 4。类对象包含类的运行时表示。系统中的每个对象都是某个Class的实例,对于每个Class,都有一个这样的描述符对象。类描述符在运行时不可修改。
答案 2 :(得分:0)
所有类都有从Object类继承的方法。
下面的代码遍历SomeClass的所有公共变量和方法并输出它们。
您将从输出中注意到someVariable和someMethod()属于我们的类,而所有其他属于Object类。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test
{
public static void main( String args[] )
{
for ( Field field : SomeClass.class.getFields() )
{
System.out.println( field );
}
for ( Method method : SomeClass.class.getMethods() )
{
System.out.println( method );
}
}
class SomeClass
{
public String someVariable;
public void someMethod()
{
}
}
}
输出:
public java.lang.String com.Test$SomeClass.someVariable
public void com.mailings.classes.Test$SomeClass.someMethod()
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
答案 3 :(得分:0)
是。
这可能会有所帮助....
Java中的每个对象都属于某个类。这就是为什么Object类(由所有其他类继承)定义getClass()
方法。
getClass()
或class-literal - Foo.class
返回一个Class对象,其中包含有关该类的一些元数据: