为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个类中调用一个类的方法

从另一个类中调用一个类的方法

湖上湖 2022-04-28 16:18:48
我正在尝试使用第二个类中的方法(应该返回一个列表)从一个类调用该方法,但是,第二个类方法没有被识别。我没有收到任何可见的错误或警告。我的第一堂课:import java.util.*;public class testClass {        public static List<Object> makeStuff() {            int a = 2;            double b = 3.1;                         return Arrays.asList(a, b);                 }    }而第二个import java.util.*;public class otherClass {    public List<Object> outputStuff() {        // create some other stuff here which will be appended to id        List<Object> id = testClass.makeStuff();        return id ;    }    public void main(String[] args) {    }}从如何从另一个类访问一个类的方法?我认为这会起作用,因为第一种方法是静态的。请问我在哪里犯错?如果需要,提供额外信息:我实际上是使用 R 将此代码与 R 接口rJava,但收到一个错误指示java错误。这将返回第一个类/方法的预期值library(rJava).jinit().jaddClassPath("C:\\Users\\david\\eclipse-workspace\\SOtest\\bin")    myJavaClass <- .jnew("testClass")x <- J(myJavaClass, "makeStuff")x# [1] "Java-Object{[2, 3.1]}"但不是第二次.jinit().jaddClassPath("C:\\Users\\david\\eclipse-workspace\\SOtest\\bin")    myJavaClass <- .jnew("otherClass")x <- J(myJavaClass, "outputStuff")抛出错误.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, 中的错误:java.lang.NoSuchMethodException: otherClass.outputStuff()
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

代码没有错。主要方法应该是

public static void main(String a[]){ new otherClass().otherstuff();}

这应该足够了。我们可以通过类名从非静态方法中调用静态方法。

因此,要从 main 调用其他东西,要么将其他东西设为静态,要么创建 otherClass 的新实例并直接调用。


查看完整回答
反对 回复 2022-04-28
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你可以让你的outputStuff静态,它应该工作,因为那是你试图调用的方法



查看完整回答
反对 回复 2022-04-28
?
智慧大石

TA贡献1946条经验 获得超3个赞

主要方法应该是 public static void main(String[] args)。从非静态方法调用静态方法非常好。



查看完整回答
反对 回复 2022-04-28
  • 3 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信