我正在调试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)