我搜索了stackoverflow以及其他一些网站,遗憾的是没有找到这个问题,更不用说回答.也许我的方法最好尝试另一种方式?我是Java新手; 这应该是我想的一个非常简单的答案.
问题: 我有一个静态方法,我想从中返回值.为了方便和整洁,我想使用我自己的类而不是ArrayList,String []或类似的.问题是我无法在静态方法中实例化我的类(正如我预期的那样可能是一个问题).有趣的是:使用String []或Object作为返回工作(这是这些类的一个实例)...所以为什么我不能使用我自己的类实例?
例:
public static String[] decodeText(String codeString) {
//Parse codestring and return values (not included in this example)
String[] data = new String[3];
data[0]="This";
data[1]="does";
data[2]="work";
return data;
}
Run Code Online (Sandbox Code Playgroud)
上面的工作很好但是当我使用自己的类返回值时,编译器给我"非静态变量,这不能从静态上下文中引用" (注意:编辑以显示这些类嵌套在JInputs类中,显然有必要重现错误):
public class JInputs extends JOptionPane {
//A lot of missing code here (which shouldn't be necessary to reproduce issue)
public class UserData {
public String userName;
public String code;
public long milliTime; …
Run Code Online (Sandbox Code Playgroud) 问题
我花了几个小时试图确定我的分布式代码失败的原因,但是在使用IDE(NetBeans)调试时我的源代码没有问题.我找到了一个解决方案,并发帖帮助其他可能有类似问题的人.顺便说一句:我是一个自学成才的程序员,可能会缺少一些基本概念 - 随时教育我.
背景资料
在JavaFX应用程序中使用WebView控件我从html文件加载网页.我想使用JavaScript来处理HTML方面,但我还需要在Java和JavaScript之间自由传递信息(两个方向).非常适合使用WebEngine.executeScript()方法进行Java启动的传输,并使用Java中的JSObject.setMember()为JavaScript启动向Java传输信息的方法.
设置链接(这种方式稍后会破坏):
/*Simple example class that gives method for
JavaScript to send text to Java debugger console*/
public static class JavaLink {
public void showMsg(String msg) {
System.out.println(msg);
}
}
...
/*This can be added in the initialize() method of
the FXML controller with a reference to the WebEngine*/
public void initialize(URL url, ResourceBundle rb) {
webE = webView.getEngine();
//Retrieve a reference to the JavaScript window object
JSObject jsObj = (JSObject)webE.executeScript("window");
jsObj.setMember("javaLink", new JavaLink());
/*Now …
Run Code Online (Sandbox Code Playgroud)