【问题标题】:Setting a Class(object) to a variable将类(对象)设置为变量
【发布时间】:2017-05-28 00:38:56
【问题描述】:

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

ThatClass obj= a; //a is any constant

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

ThatClass(){

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

}

我怀疑不是,但话说回来,Java 继续让我感到惊讶。

【问题讨论】:

  • 我不太明白你在做什么
  • 您真正想要实现的目标是什么?你的例子对我来说不是很清楚,也很抱歉。
  • 我想他想写第一行,但要从最后一节中得到行为。但只有@Richard 可以澄清这个问题。
  • 再次澄清一下,我想要第一行代码。你可以将一个类及其对象分配给一个变量或常量,而不是诉诸“new”来调用构造函数吗?

标签: java class variables assign


【解决方案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();

【讨论】:

  • 谢谢你,医学博士。我明白这一点,这不是我想知道的。我想知道一个类和对象是否可以设置为变量或原始类型常量?
【解决方案2】:

是的。

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

应该可以。

【讨论】:

    【解决方案3】:

    不,你没有办法做到这一点。基本上,你要求装箱转换,java只支持以下装箱转换。

    从布尔型到布尔型

    从字节类型到字节类型

    从短型到短型

    从char类型到Character类型

    从 int 类型到 Integer 类型

    从长型到长型

    从浮点型到浮点型

    从双精度型到双精度型

    从空类型到空类型

    *String 是一种特殊情况。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多