Вызов метода из одного класса из другого класса
Я пытаюсь вызвать метод из одного класса, используя метод из второго класса (который должен возвращать список), однако метод второго класса не распознается. Я не получаю никаких видимых ошибок или предупреждений.
Мой первый класс:
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, используя 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 ответа
Ничего плохого в коде. Основной метод должен быть
public static void main(String a[]){ new otherClass().otherstuff();}
Этого должно быть достаточно. Мы можем вызывать статические методы из нестатических методов по имени класса.
Поэтому для вызова otherstuff из main либо сделайте otherstuff как статический, либо создайте новый экземпляр otherClass и вызовите напрямую.
Вы можете сделать свой outputStuff
статический и он должен работать, так как этот метод вы пытаетесь вызвать
Основной метод должен быть public static void main(String[] args). Вызов статического метода из нестатического метода - это прекрасно.