在Java中以字符串形式从另一个文件调用方法
我使用以下方法创建了文件在Java中以字符串形式从另一个文件调用方法,java,string,import,Java,String,Import,我使用以下方法创建了文件ClassifierModule.java: public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener { public int measureRatio(double[] means) { return (int) (means[3] / means[1]) ; } } 我试图调用此方法在另一个.java文件中创
ClassifierModule.java
:
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {
public int measureRatio(double[] means) {
return (int) (means[3] / means[1]) ;
}
}
我试图调用此方法在另一个.java文件中创建一个字符串,如下所示:
public static void main(String[] args) {
int r = ClassifierModule.measureRatio(double[]);
}
public static void main(String[] args) {
// create an object
ClassifierModule cm = new ClassifierModule();
// define a parameter to be passed
double[] values = {3.0, 4.0}; // this is just an example array!
// and call the method with that parameter
int r = cm.measureRatio(double[]);
}
我得到的唯一结果是一个错误:
error: '.class' expected:
int r = ClassifierModule.measureRatio(double[]);
^
我做错了什么
下面是ClassifierModule.java的fuul代码->您调用该方法就像调用类级别的方法一样。
您必须创建类型为ClassifierModule
的对象才能调用该方法,如下所示:
public static void main(String[] args) {
int r = ClassifierModule.measureRatio(double[]);
}
public static void main(String[] args) {
// create an object
ClassifierModule cm = new ClassifierModule();
// define a parameter to be passed
double[] values = {3.0, 4.0}; // this is just an example array!
// and call the method with that parameter
int r = cm.measureRatio(double[]);
}
作为替代方案,您可以通过将ClassifierModule
的方法设置为static
来将其设置为class方法:
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {
// this is now a method at class level
public static int measureRatio(double[] means) {
return (int) (means[3] / means[1]) ;
}
}
public static void main(String[] args) {
// define a parameter to be passed
double[] values = {3.0, 4.0}; // this is just an example array!
int r = ClassifierModule.measureRatio(values);
}
这取决于你的要求,你应该选择什么选项
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {
public int measureRatio(double[] means){
return (int) (means[3] / means[1]) ;
}
}
measureRatio
是一个实例方法,因此不能通过类调用它,但必须通过类的实例调用它
public static void main(String[] args) {
int r = ClassifierModule.measureRatio(double[]);
}
public static int measureRatio(double[] means){
return (int) (means[3] / means[1]) ;
}
double[]
是必须传递的类型,但它不是该方法可以使用的值。将其更改为:
public static void main(String[] args) {
double[] param = new double[5];
param[0] = 7; param[1] = 8; param[2] = 4;
param[3] = 3; param[4] = 4;
ClassifierModule module = new ClassifierModule();
int r = module.measureRatio(param);
}
int r = new ClassifierModule(...).measureRatio(double[]);
如前所述,可以简单地将方法
设置为静态的
,因为它不依赖于类的任何状态和实例对象
public static void main(String[] args) {
int r = ClassifierModule.measureRatio(double[]);
}
public static int measureRatio(double[] means){
return (int) (means[3] / means[1]) ;
}
然而,该类扩展并实现了一些东西,可能为评估提供了一些上下文
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {
public ClassifierModule (ReactApplicationContext reactContext) {
super(reactContext);
}
public int measureRatio(double[] means) {
// Maybe use: getReactApplicationContext()
return (int) (means[3] / means[1]) ;
}
}
然后需要做一些类似的事情:
public static void main(String[] args) {
double[] param = new double[5];
param[0] = 7; param[1] = 8; param[2] = 4;
param[3] = 3; param[4] = 4;
ClassifierModule module = new ClassifierModule();
int r = module.measureRatio(param);
}
int r = new ClassifierModule(...).measureRatio(double[]);
你需要做一些简单的修改
BufferListener {
public static int measureRatio(double[] means) {
return (int) (means[3] / means[1]) ;
}
}public static void main(String[] args) {
double[] array= new double[5];
array[0] = 1; array[1] = 2; array[2] = 3;
array[3] = 5; array[4] = 4;
int r = ClassifierModule.measureRatio(array);//array is a double array
}
例如,您尝试在静态上下文中调用实例方法。另外,作为参数,您需要传递一个带有值的变量,而不是类型。在
int r=ClassifierModule.measureRatio(double[])上,您想做什么代码>?您声称“在另一个.java文件中创建字符串”,但我在这里没有看到任何字符串。使用选项来澄清您的问题。请描述您对代码的期望。Pshemo,我想将“public int measureRatio(double[]的意思)”保存到另一个文件中的字符串中,但我不知道如何调用它。我真诚地建议您花一些时间阅读。。。自上而下。你似乎在这里发明了自己的语法。您的代码在各个级别上都没有意义。不幸的是,所有这些都不起作用。它以同样的错误结束:(那么,请编辑您的问题并发布类的代码ClassifierModule
。可能有助于查看实现。将lnk粘贴到整个文件;)我在回答中编辑了代码,使其完全可编译。您没有作为参数的值,只有一个类型(double[]
)。该值必须定义为有效。我不理解此部分-参数[0]=7;参数[1]=8;参数[2]=4;参数[3]=3;参数[4]=4;如果不这样做,double数组(param)将填充double的默认值,即0。我刚刚补充说,为了避免以后在代码中的means[3]/means[1]上出现divisionBy0错误,我添加的部分将被转换为:3/8它不会更改means[3]和means[1]下的值吗?它们都包含来自外部传感器的数据。在您当前的代码中,没有值,我只是添加了这个值(仅此示例,不复制到您的代码中),以避免它们都是零(作为默认值)。编辑:对于您当前的代码,我指的是您在此处作为示例发布的代码,而不是(可能)您稍后添加链接以结束错误的更大代码块:“错误:找不到符号int r=ClassifierModule.measureRatio(array);^”嘿,你需要先创建一个数组。我只是提出了一个想法。让我来编辑