首先,我是Java的新手,我的编程总体上是生锈的。所以我可能错过了一些非常简单的事情。
错误:
cannot find symbol
symbol : method setMethod(java.lang.String)
location: class ij.plugin.Thresholder
Thresholder.setMethod("Mean");
一些代码段: 这部分是第三方代码。我想尽量避免修改
public class Thresholder implements PlugIn, Measurements, ItemListener {
private static String staticMethod = methods[0];
public static void setMethod(String method) {
staticMethod = method;
}
}
我的代码(以及一些相关部分)
import ij.plugin.Thresholder;
public class CASA_ implements PlugInFilter,Measurements {
public void run(ImageProcessor ip) {
track(imp, minSize, maxSize, maxVelocity);
}
public void track(ImagePlus imp, float minSize, float maxSize, float maxVelocity) {
Thresholder.setMethod("Mean"); <-- This is the line the compiler hates
}
}
为什么编译器要查找返回除void之外的其他东西的setMethod方法?
由于
答案 0 :(得分:1)
您无法在类声明块中调用方法。您可以在构造函数中或在另一个方法中执行此操作(然后必须在该类上显式调用)。
答案 1 :(得分:0)
正如Makoto正确陈述的那样,你不能在课堂声明中调用Thresholder.setMethod("Mean")
。
在实现PlugInFilter
的类中,您必须定义run(ImageProcessor ip)
和setup(String arg, ImagePlus imp)
方法,那么为什么不在设置插件过滤器时设置阈值方法:< / p>
import ij.IJ;
import ij.ImagePlus;
import ij.measure.Measurements;
import ij.plugin.Thresholder;
import ij.plugin.filter.PlugInFilter;
import ij.process.ImageProcessor;
public class CASA_ implements PlugInFilter,Measurements {
// define instance variables:
ImagePlus imp;
/**
* implement interface methods
*/
public int setup(String arg, ImagePlus imp) {
this.imp = imp;
Thresholder.setMethod("Mean");
IJ.log("Setup done.");
return DOES_ALL;
}
public void run(ImageProcessor ip) {
// do your processing here
}
}
查看ImageJ plugin writing tutorial或Fiji's script editor及其模板(模板&gt; Java&gt; Bare PlugInFilter )作为起点。