我试图将值t从一个类传递到另一个类,但在我运行程序之前,我从这行代码中得到non static method cannot be referenced from static context
:
t = (PrinterSettings.getT() * 60);
我想从这段代码中获取值t:
public int t = 1; //defualt value for amount of mintues in the future the job should wait untill sent
public int getT() {
return (t);
}
public void setT(int t) {
this.t = t;
}
我做错了什么?我怎么能得到
编辑:
我从
获取的所有代码 public int t = 1; //defualt value for amount of seconds in the future the job should wait untill sent
public int getT() {
return (t);
}
public void setT(int t) {
this.t = t;
}
这是我正在使用的类,它从上面的类中调用t来使用:
public class DealyTillPrint {
public int t;
public String CompletefileName;
private String printerindx;
private static int s;
private static int x;
public static int SecondsTillRelase;
public void countDown() {
System.out.println("Countdown called");
s = 1; // interval
t = ((new PrinterSettings().getT()) * 60); //(PrinterSettings.SecondsTillRelase); // number of seconds
System.out.println("t is : " + t);
while (t > 0) {
System.out.println("Printing in : " + t);
try {
Thread.sleep(s * 1000);
} catch (Exception e) {
}
t--;
}
这是我使用微调器
设置t
的地方
<p:spinner min="1" max="1000" value="#{printerSettings.t}" size ="1">
<p:ajax update="NewTime"/>
</p:spinner>
答案 0 :(得分:2)
您正在使用PrinterSettings.getT()
,但您不能这样做,因为PrinterSettings
是一个类,而getT()
方法是针对该对象的。您需要先创建一个PrinterSettings对象,然后调用getT()
。
PrinterSettings myObjectOfPrinterSettings = new PrinterSettings();
myObjectOfPrinterSettings.getT(); //this should work without the error
答案 1 :(得分:1)
您可以选择执行以下两项操作之一:
1)使您的PrinterSettings文件中的所有内容保持静态(并使PrinterSettings也是静态的):
public static int t = 1;
public static int getT() {
return (t);
}
public static void setT(int t) {
this.t = t;
}
2)不要更改PrinterSettings,只需为您的代码执行此操作:
//Put this somewhere at the beginning of your code:
PrinterSettings printerSettings = new PrinterSettings();
//Now have some code, which will include setT() at some point
//Then do this:
t = (printerSettings.getT() * 60);
在我看来,后者更为可取。
编辑:我刚刚编辑的是因为如果你没有保留你正在使用的PrinterSettings变量,那么新的一个将在新的PrinterSettings对象中为t
为1。相反,请确保在程序开始时实例化PrinterSettings对象,并在整个过程中使用它。
答案 2 :(得分:0)
而不是:
public int getT() {
return (t);
}
Write:
public static int getT() {
return (t);
}
这将解决您的问题。 通过此更改,您可以使用其类名访问此方法。作为一种课堂方法。