最近在Dart上看到过"Expando"一词.听起来不错.API没有为我提供太多线索.
一两个例子可能是最有帮助的!
(不确定这是否相关,但我最担心的是将方法(getter)和/或变量添加到类中.希望这可能是解决这个问题的关键.(提示:我正在使用Nosuchmethod方法现在,希望能够返回未完成方法的值.))
提前致谢,
_swarmii
我有一些代码,当我运行它时会产生一个错误,说:
NoSuchMethod:方法 'XYZ' 在 null 上被调用
这是什么意思,我该如何解决?
我有一个主类,应该调用JavaFX应用程序(SimpleSun)来从用户获取信息.目前我创建了一个JavaFX类的Object并启动它,但这似乎不起作用.有人看到我工作中的错误吗?
这是我的代码和异常:Main.java:
package ch.i4ds.stix.sim;
import ch.i4ds.stix.sim.grid.config.Configuration;
import ch.i4ds.stix.sim.grid.config.ConfigurationFromFile;
public class Main{
Configuration config;
public static void main(String[] args) {
ConfigurationFromFile config = new ConfigurationFromFile();
SimpleSun ss = new SimpleSun(config);
ss.show();
}
}
Run Code Online (Sandbox Code Playgroud)
SimpleSun.java:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import ch.i4ds.stix.sim.grid.config.Configuration;
import ch.i4ds.stix.sim.grid.config.ConfigurationFromFile;
public class SimpleSun extends Application{
private Stage primaryStage;
Configuration configuration;
public SimpleSun(ConfigurationFromFile config) {
this.configuration = config;
}
@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Simple Sun - Alpha"); …Run Code Online (Sandbox Code Playgroud) 我有两个类Parser和Proxy,当我从调用的方法Parser,它不存在,它会委托给Proxy类.
我的代码:
class Parser {
noSuchMethod(Invocation invocation) {
// how to pass the `invocation` to `Proxy`???
}
}
class Proxy {
static String hello() { return "hello"; }
static String world() { return "world"; }
}
Run Code Online (Sandbox Code Playgroud)
我写的时候:
var parser = new Parser();
print(parser.hello());
Run Code Online (Sandbox Code Playgroud)
它将打印:
hello
Run Code Online (Sandbox Code Playgroud) 我目前正在编写Java应用程序,但我遇到了问题.
package framework.messages.requests;
import framework.sessions.Session;
public class Handshake {
public static void CheckRevision(Session Session) {
try {
System.out.println("[" + Session.GetID() + "] --> " + Session.GetRequest().ReadUTF());
}
catch (Exception ex) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我班上的是什么.
在main(String[] args)如果我使用:
System.out.println(Handshake.class.getMethods()[0].getName());
Run Code Online (Sandbox Code Playgroud)
输出是CheckRevision.
但如果我在其他地方使用:
this.Packets[6428] = Handshake.class.getMethod("CheckRevision");
Run Code Online (Sandbox Code Playgroud)
我明白了:
Exception in thread "main" java.lang.NoSuchMethodException: framework.messages.requests.Handshake.CheckRevision()
at java.lang.Class.getMethod(Unknown Source)
at framework.messages.MessageHandler.AddPackets(MessageHandler.java:18)
at framework.Framework.main(Framework.java:34)
Run Code Online (Sandbox Code Playgroud)
为什么我没有得到好方法?
我有以下API代码,为简洁起见缩短了:
public class Vec
{
Vec(int x, int y, int z) {/*implementation*/}
//other fields and methods irrelevant to question and not shown
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试在与上面的类不同的包中编写代码,该类使用反射来调用该类的构造函数并创建它的新实例.这是我尝试过的(下面的代码在我的应用程序的main方法中):
Constructor<Vec> c = Vec.class.getConstructor(Integer.TYPE, Integer.TYPE, Integer.TYPE);
c.setAccessible(true);
Vec newVec = c.newInstance(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
但是,运行上面的代码时,后一代码的第一行会出现异常:
Exception in thread "main" java.lang.NoSuchMethodException: somePackages.Vec.<init>(int, int, int)
Run Code Online (Sandbox Code Playgroud)
为什么它仍然提供该异常,即使该构造函数仍然存在?我正在使用oracle-java8-jdk我的Raspberry Pi 运行此代码,如果这有帮助的话.
nosuchmethod ×6
dart ×3
java ×3
constructor ×1
dart-mirrors ×1
delegates ×1
expando ×1
flutter ×1
javafx ×1
null ×1
proxy ×1
reflection ×1