gpt4 book ai didi

Java:无法理解如何从其他类调用实例

转载 作者:行者123 更新时间:2023-11-29 06:49:27 24 4
gpt4 key购买 nike

我一直很困惑,因为我试图弄清楚如何从另一个类的一个类的实例中调用一个方法。例如:

public class Test1 
{

public static void makeSomeInst()
{
Test1 inst = new Test1();
inst.fireTest();
}

public void fireTest()
{
System.out.println("fireTest");
}

public Test1()
{

}

}

理解上面的内容没有问题,但是如果我想从名为 Test2 的类中inst 做些什么,我该怎么做呢?以下示例不起作用:

public class Test2 
{
public static void main(String[] args)
{
Test1.makeSomeInst();
inst.fireTest();
}
}

更清楚一点,我知道我可以在不实例化的情况下调用静态引用,但我只想知道,在这种特定情况下

从 Test2 类引用名为 inst 的 test1 对象的语法是什么?

最佳答案

what If I want to do something to inst from a class called Test2, how would I do that?

首先,您必须向Test2 类传授Test1 是什么。

public class Test2 
{
public doSomething()
{
inst.fireTest();
}

public Test2(Test1 inst)
{
this.inst = inst;
}

private Test1 inst;
}

然后告诉inst2对象inst是什么。

public class Test1 
{

public static void main(String[] args)
{
Test1 inst = new Test1();

Test2 inst2 = new Test2(inst); // <- new code

inst2.doSomething(); // <- new code
}

public void fireTest()
{
System.out.println("fireTest");
}

public Test1()
{

}

}

您只需要一个主电源即可开始演出。控制流仍然可以通过其他对象。但在这一点上我不会称这些独立测试。我只使用该名称来匹配您的代码。

您看到的是一种叫做引用传递的东西。它的花哨术语是Pure Dependency Injection * 。基本模式是在 main 中构建一个对象图。构建完成后,对一个对象调用一种方法以启动整个过程。

在 main 中,您构建的每个对象都将与您的程序一样长寿。您不会在这里找到构建的是后来生成的对象,例如时间戳。一个好的经验法则是在进行任何实际工作之前构建这些长期存在的对象中的每一个。因为他们彼此了解,所以他们可以在他们之间来回传递控制流。那里有很多力量,如果使用不当,它会变得困惑。查看Architectural Patterns帮助保持简单。

这里遵循的原则是separate use from construction .遵循这一点,您可以轻松地改变对在一个地方谈论什么的想法。如果设计更改不会迫使您重写所有内容,那就太好了。

关于Java:无法理解如何从其他类调用实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53791901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com