Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在java中创建实例的同一行中调用方法吗_Java_Methods_Constructor_Dot Operator - Fatal编程技术网

可以在java中创建实例的同一行中调用方法吗

可以在java中创建实例的同一行中调用方法吗,java,methods,constructor,dot-operator,Java,Methods,Constructor,Dot Operator,当我尝试对下面的代码执行相同操作时,它不起作用: class BooleanWrap{ boolean b = new Boolean("true").booleanValue(); } 编译错误: java:6:错误:不兼容的类型 TestBox t=newtestbox().go() 当我将方法go()的返回类型从void更改为类类型时,我不再得到错误 class TestCode { public static void main(String[] ar) {

当我尝试对下面的代码执行相同操作时,它不起作用:

class BooleanWrap{
    boolean b = new Boolean("true").booleanValue(); 
}
编译错误:

java:6:错误:不兼容的类型 TestBox t=newtestbox().go()

当我将方法
go()
的返回类型从
void
更改为类类型时,我不再得到错误

class TestCode  {
    public static void main(String[] ar)  {
        TestCode tc = new TestCode().go();
    }

    void go() {
        //some code
    }
}

我刚才在上述代码中创建的对象(由
tc2
引用)会发生什么情况?它会被放弃吗?

TestCode tc=new TestCode().go()
只有在
go()
方法返回一个
TestCode
时才起作用,因为您要将它赋给
TestCode
类型的变量


TestCode2的情况下,tc2=newtestcode2().go()
,如果
go()
方法返回对
TestCode2
的不同实例的引用(即不是您为其调用的
go()
),则原始实例将不会在任何位置被引用,并且将符合垃圾收集的条件。换句话说,
tc2
将引用由
go()
返回的实例,该实例不必与使用
newtestcode2()
在主方法中创建的实例相同。这应该可以正常工作:

class TestCode2 {
    public static void main(String[] ar) {
        TestCode2 tc2 = new TestCode2().go();
    }

    TestCode2 go() {
        //some code
    }
}
编辑:其他信息

这样就无法保存创建的实例。它将在下一次垃圾收集中立即被销毁。因此,通常情况下,为了避免这种不必要的创建和破坏,如果不需要实例本身,将使用静态方法

class TestCode{
    public static void main(String[] ar){
        new TestCode().go();
    }

    void go() {
        System.out.println("Hello World");
    }
 }

正如Eran所说,方法go()不返回任何内容,而您正试图将该内容分配给变量,您的方法需要返回一些内容,在本例中是TestCode对象,这就是我的意思。编辑的答案更精确。是的,那这个物体呢?由于它是唯一被引用的引用变量,现在引用其他对象。@user1851607变量tc2从未引用由
new TestCode2()
创建的实例。它只引用了由
go()
返回的实例。不,它不会。无法将void方法链接到构造函数调用。对不起,我的错误。我对下面的答案感到困惑。你不想归还任何东西。我看不出来。这无法解释问题所在。
class TestCode{
    public static void main(String[] ar){
        TestCode.go();
    }

    static void go() {
        System.out.println("Hello World");
    }
 }