类方法和类变量是否属于java中的类对象?

时间:2012-07-26 18:03:55

标签: java

java doc中提到了以下两点:

  1. “类对象是在加载类时由Java虚拟机自动构造的,并且通过调用类加载器中的defineClass方法
  2. 该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。
  3. 我的问题是:类方法和类变量是否属于java中的“java.lang.class”对象?

4 个答案:

答案 0 :(得分:1)

是。 java.lang.Class的每个实例都允许访问该类的类变量和方法。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html

答案 1 :(得分:1)

1。 Class methodsClass variable类的静态成员,属于该类,他们正在由该类的所有对象共享。

2。 non-static variables and methods in a class属于对象。每个对象都有自己的非静态成员。

3。 java.lang.Class<T>在正在运行的Java应用程序中代表classesinterfaces

<强> 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对象,其中包含有关该类的一些元数据:

  • 名称
  • 方法
  • 字段
  • 构造
  • 注释