我正在调试Linux上的Qt Creator中的qt快速天气示例,调试器在执行以下代码时挂起:
QQmlApplicationEngine engine(QUrl("qrc:/weatherapp/qml/main.qml"));
Run Code Online (Sandbox Code Playgroud)
调试器日志不断显示:
QML调试器:没有及时收到应用程序输出,尝试连接...
我在ArchLinux x64上使用Qt Creator 3.1.1.
我需要按类名创建类的实例,问题是这些类碰巧是子类(我已经有了父类的实例).我记得class.forName()无法加载子类.在C++中,我可以使用从名称到静态函数指针的查找表来执行此操作,但是这个动态子类加载甚至可以在Java中加载吗?
谢谢.
UPDATE
感谢您的回答,但它看起来不适用于以下示例:
AbStractTest.java
public abstract class AbstractTest{
AbstractTest(int i){}
class InnerTest
{
InnerTest(){
System.out.println("inner test class");
}
void test(){
System.out.println("inner test");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Test.java
public class Test extends AbstractTest
{
Test(int i){
super(i);
}
public static void main(String[] args) throws Exception
{
Test t = new Test(1);
AbstractTest.InnerTest innerTest = (AbstractTest.InnerTest)Class.forName("AbstractTest$InnerTest").getConstructor(AbstractTest.class).newInstance(t);
innerTest.test();
}
}
Run Code Online (Sandbox Code Playgroud)
它最终导致以下错误:
Exception in thread "main" java.lang.NoSuchMethodException: AbstractTest$InnerTest.<init>(AbstractTest)
at java.lang.Class.getConstructor0(Class.java:2678)
at java.lang.Class.getConstructor(Class.java:1629)
at Test.main(Test.java:9)
Run Code Online (Sandbox Code Playgroud)