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

我正在尝试使用第二个类中的方法(应该返回一个列表)从一个类调用该方法,但是,第二个类方法没有被识别。我没有收到任何可见的错误或警告。


我的第一堂课:


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()


湖上湖
浏览 132回答 3
3回答

富国沪深

代码没有错。主要方法应该是public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;a[]){&nbsp;new&nbsp;otherClass().otherstuff();}这应该足够了。我们可以通过类名从非静态方法中调用静态方法。因此,要从 main 调用其他东西,要么将其他东西设为静态,要么创建 otherClass 的新实例并直接调用。

汪汪一只猫

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

智慧大石

主要方法应该是 public static void main(String[] args)。从非静态方法调用静态方法非常好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java