$ 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
回答
你定义的实际上并不是一个构造函数,而是一种叫做Const
的方法。如果你改变了你的代码,这样的事情,它的工作:
Const c = new Const();
System.out.println(c.Const("Hello!"));
如果没有特定构造的明确定义,编译器会自动创建一个无参数的构造函数。
构造函数不能返回值。这是最后的。同样的道理 - 它不能有返回类型,这就是你得到编译错误的原因。你可能会说返回值总是隐式的由构造函数创建的对象。
实际上构造函数,一个Java类不能返回它必须是以下形式
public class Test {
public Test(/*here the params*/) {
//this is a constructor
//just make some operations when you want to create an object of this class
}
}
检查这些链接 http://leepoint.net/notes-java/oop/constructors/constructor.html http://java.sun.com/docs/books/tutorial/java/javaOO/constructors.html
值构造函数不能有返回值像一个“正常”功能。当有问题的类别被创建时调用它。 它用于执行该实例的初始化。
构造函数不能返回值;他们返回构建的对象,可以这么说。
由于编译器正在寻找一个将字符串作为其参数的构造函数,因此出现错误。既然你做了而不是声明了一个构造函数,唯一可用的构造函数是没有任何参数的默认构造函数。
为什么我说你没有声明构造函数?因为只要你为你的方法声明了一个返回值/类型,它不再是一个构造函数,而是一个常规方法。
一类包含 调用,以从 类蓝图对象构造函数。构造函数 声明看起来像方法 声明 - 除了它们使用 类的名称并且没有返回 类型。
如果您详细说明您试图达成的目标,可能有人会告诉您如何实现该目标。
public class Const {
private String myVar;
public Const(String s) {
myVar = s;
}
public String getMyString()
{
return myVar;
}
public static void main(String[] args) {
Const myConst = new Const("MyStringHere");
System.out.println(myConst.getMyString());
}
}
你应该做一个toString()函数而不是getMyString()。所以你可以做'System.out.println(myConst)' – Rhs 2012-12-05 23:03:33
我认为,产生你想要将是继效应的最好方法:
public class Const {
private String str;
public Const(String hello) {
str = hello;
}
public String toString() {
return str;
}
public static void main(String[] args) {
System.out.println(new Const("Hello!"));
}
}
这样就取代了以前使用的public String Const()
方法,并通过覆盖的Object
的public String toString()
方法(所有Java类继承自)当要打印对象时,对象的String值被正确打印,所以您的主要方法保持不变。
构造函数不能返回值,因为构造函数隐式返回对象的引用ID,并且由于构造函数也是方法,并且方法不能返回多个值。所以我们说明确的构造函数没有返回值。
已经有很多很棒的答案。我想补充一点,如果你想通过调用一个构造函数得到一些与对象本身分离的返回代码,你可以将构造函数包装在一个factory method
中,在创建后可以在内部做一些数据验证构造的对象并根据结果返回boolean
。
要从构造函数传回一个值 - 只需传入一个数组作为参数即可。 为了说明一个道理:
Test() {
Boolean[] flag = new Boolean[1];
flag[0] = false;
new MyClass(flag);
System.out.println(flag[0]); // Will output 'true'
}
class MyClass {
MyClass(Boolean[] flag) {
// Do some work here, then set flag[0] to show the status
flag[0] = true;
}
}
/************************************************
Put the return value as a private data member, which gets
set in the constructor. You will need a public getter to
retrieve the return value post construction
******************************************************/
class MyClass
{
private Boolean boolReturnVal;
public Boolean GetReturnVal() { return(boolReturnVal); }
MyClass() // constructor with possibly args
{
//sets the return value boolReturnVal
}
public static void main(String args[])
{
MyClass myClass = new MyClass();
if (myClass.GetReturnVal())
{
//success
}
}
}
- 1. 构造函数返回值?
- 2. 构造函数返回值
- 3. 构造函数返回值的异常
- 4. `返回值'从Java构造函数异常?
- 5. 如何从构造函数中返回构造函数的对象
- 6. 模型构造函数返回数组
- 7. 如何从Java函数返回值?
- 8. 如何在构造函数外访问构造函数的值
- 9. PHP - 构造函数不返回false
- 10. Erlang:case..of构造函数调用返回?
- 11. Highchart构造函数不返回图表
- 12. GeoCodeRequest()构造函数返回null
- 13. 使用构造函数返回
- 14. 从Scala构造函数提前返回
- 15. mysqli构造函数返回null
- 16. JavaScript构造函数返回错误
- 17. NSData contentsOfURL构造函数返回无
- 18. PHP构造函数返回NULL
- 19. 构造函数可以返回java中的数据类型吗?
- 20. Java构造函数
- 21. 构造函数(java)
- 22. Java - 构造函数
- 23. 将构造函数的返回值作为参数传递
- 24. autofac如何使用构造函数参数返回服务?
- 25. Java子类构造函数赋值
- 26. 对象构造函数和Javascript中的返回值
- 27. Python类的构造函数返回一个空值
- 28. 构造函数返回值不是“[Object object]”
- 29. 从构造函数返回值的C++错误
- 30. 复制构造,为什么在按值函数的返回
考虑修改这个问题是这样的标题“的Java:是我在这里的构造函数返回值?”我有一个关于Java如何从构造函数返回值的具体问题,我认为这个问题是关于更一般的主题的......相反,它就像“帮助,我无法为构造函数分配返回值! – Jan 2012-02-02 22:28:16