将Class(对象)设置为变量

时间:2017-01-12 19:11:51

标签: java class variables assign

在Java中,是否可以将类或类对象分配给变量?

ThatClass obj= a; //a is any constant

而不是ThatClass obj=new ThatClass(); //调用构造函数,然后调用/打印该构造函数中的整数(或任何其他值)(见下文)。

ThatClass(){

    final int constant=a;
    System.out.println(constant);

}

我怀疑没有,但是再一次,Java继续让我感到惊讶。

3 个答案:

答案 0 :(得分:1)

如果要分配对象的类是子类型,显然可以将类对象分配给另一个类。 例如,考虑一个类

class Bird
{
pulic Bird(String name)
{
System.out.println(name);
}
}

现在你创建一个像这样的子类鹦鹉

class Parrot extends Bird
{
public Parrot()
{
super("Parrot");
}
}

现在你创建了一个Parrot对象。

Parrot p=new Parrot();

您可以将此分配给Bird

Bird b=p;

即使您创建像Bird这样的对象

Bird b1=new Bird("A Bird");

您可以将此分配给另一个Bird变量,如下所示

Bird b2=b1;

如果您想要访问该类的某些字段而不创建该类的对象,则必须将这些字段转换为static

class MyClass
{
final static int constant=a;
public static void show()
{
System.out.println(constant);
}
}

您可以像以下

一样调用show()方法
MyClass.show();

答案 1 :(得分:0)

是。

Class classType = String.class;
System.out.println(classType)

应该工作。

答案 2 :(得分:0)

不,你无法做到这一点。基本上,你要求拳击转换,java只支持以下拳击转换。

  

从类型布尔值到类型布尔

     

从类型字节到类型字节

     

从短类型到短类型

     

从char类型到Character

     

从int类型到Integer类型

     

从long类型到Long

     

从float类型到Float类型

     

从double类型到Double

     

从null类型到null类型

*字符串是一种特殊情况。

来源:http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.7