Java:构造函数如何返回值?

2022-09-02 22:48:25
$ cat Const.java 
public class Const {
    String Const(String hello) {
        return hello; 
 }
 public static void main(String[] args) {
     System.out.println(new Const("Hello!"));
 }
}
$ javac Const.java 
Const.java:7: cannot find symbol
symbol  : constructor Const(java.lang.String)
location: class Const
  System.out.println(new Const("Hello!"));
                     ^
1 error

答案 1

您定义的实际上不是构造函数,而是一个名为 .如果您将代码更改为如下所示,它将起作用:Const

Const c = new Const();
System.out.println( c.Const( "Hello!" ) );

如果没有显式定义特定的构造函数,编译器将自动创建一个无参数构造函数。


答案 2

构造函数不能返回值;可以这么说,它们返回构造的对象。

您会收到一个错误,因为编译器正在寻找一个将字符串作为其参数的构造函数。由于您没有声明构造函数,因此唯一可用的构造函数是不采用任何参数的默认构造函数。

为什么我说你没有声明构造函数?因为一旦你为你的方法声明了一个返回值/类型,它就不再是一个构造函数,而是一个常规方法。

来自 Java 文档

类包含用于从类蓝图创建对象的构造函数。构造函数声明类似于方法声明,只是它们使用类的名称并且没有返回类型。

如果你详细说明你想要实现的目标,有人可能会告诉你如何才能达到这个目标。