当前位置: 首页 > 知识库问答 >
问题:

您可以使用该类调用方法吗?[副本]

万俟沛
2023-03-14

每当我必须从另一个类调用一个方法时,我首先创建一个对象,然后通过该对象调用它。但是当我编写一些代码时,我错误地编写了classname.methodname();并且它起作用了。

我通常会写,

classname obj = new classname();
obj.methodname();

以下是实际代码:

1类

public class Dataset {

    public static List<ECCardData> getDataset() {
         //Code
}

在2班

List<ECCardData> dataset = Dataset.getDataset();

我注意到< code>methodname()是静态的。那是原因吗?

共有2个答案

施海
2023-03-14

我讨厌回答我的问题,但我找到了正确的答案。

当方法声明为静态时,该方法的一个实例将仅存在。创建对象时,将创建该方法的新实例,这对于静态方法是不可能的。因此,您可以使用类名。

classname.methodname(); //only one instance 

classname obj;
obj.methodname(); //instance with obj as Object(IDE gives warning, should not be allowed, ideally)

Java的基本范式是你编写类,然后这些类被实例化。实例化的对象(类的一个实例)具有与其相关联的属性(成员变量),这些属性影响它们的行为;当实例执行其方法时,它将引用这些变量。

然而,特定类型的所有对象可能具有完全不依赖于成员变量的行为;这些方法最好是静态的。由于是静态的,运行该方法不需要类的实例。

您可以这样做来执行静态方法:

classname.staticMethod();//Simply refers to the class's static code But
> to execute a non-static method, you must do this:
> 
> classname obj = new classname();//Create an instance
> obj.nonstaticMethod();//Refer to the instance's class's code
吴品
2023-03-14

是的,对于静态方法(具有合适的访问修饰符),您可以通过以下方式直接调用类

YourClass.yourMethod();

还有这条路

YourClass anObject = new YourClass();
anObject.yourMethod();

快乐编码。

 类似资料:
  • 问题内容: 指这里 A是预编译的Java类(我也有源文件)B是我正在编写的Java类 B扩展了A。 如何实现逻辑,以便A可以调用B拥有的方法。 以下是条件: 我不想触摸A(尽管没有其他解决方案,但这只是最后一个选择)。 我不想使用反射。 如前所述,如果需要,我可以修改A。哪种方式可能是可行的解决方案? 问题答案: 类应该定义将要调用的方法(可能是抽象方法,根据Paul Haahr的出色指南,A应该

  • 问题内容: Java具有允许Java调用javascript的脚本管理器,如下所示: 我的问题是,如果我有sayHi()函数,是否可以通过脚本引擎使用javascript来调用Java函数?谢谢。 问题答案: 从JavaDocs迅速被黑客入侵。 输出量

  • 在Java8中,我有如下内容: 例如,如果A解锁或提供了对一个资源(比如数据库)的访问,而B解锁了第二个资源(另一个数据库),我认为没有办法使代码解锁A,然后B通过使用函数接口强制执行这个契约,要求调用A和B。一层深的你可以做到,但N层深的看起来就不可能了。 我打算使用lambdas来避免进行昂贵的调用,但要对我的库的用户执行语义操作顺序。 这个问题与“在Java中显式调用默认方法”并不完全相同,

  • 问题内容: 为了重用一些定义为不同类的实例方法的现有代码,我想做些类似的事情: 但这导致: TypeError:未绑定方法hello()必须以Foo实例作为第一个参数调用(取而代之的是Bar实例) 这样的事情可能吗? 我应该很清楚,我知道这是一个坏主意。显然,真正的解决方案是重构。我只是想必一定有办法,事实证明是有办法的。 感谢您的评论。 问题答案: 看起来像这样: 您好,我是酒吧。 我想我需要阅

  • 寻找Reactor调度程序的指导。 我想在后台运行某些IO任务,即向技术团队发送电子邮件。为了使其异步,我使用Mono。fromRunnable订阅了调度程序。 我可以选择使用 Schedulers.elastic() 或 Schedulers.newElastic()。我更喜欢后者,因为它允许我给它一个唯一的名称,这将有助于日志分析。 做一个静态变量可以吗? 在Mono上订阅它,而不是每次都要创

  • 问题内容: 在规范之一中,是否有对以“ is”开头的方法的引用,而方法名称的后缀是属性名称(类似于Java bean的getter / setter方法)? 例如: 谢谢! 问题答案: 仅对原始布尔有效。这是该规范的摘录: 8.3.2布尔属性另外,对于布尔属性,我们允许使用getter方法来匹配模式:public boolean is(); 可以提供这种“ is”方法来代替“ get”方法,或者可