小编per*_*kin的帖子

泛型类构造函数的泛型参数

为什么我可以编译这段代码而不会出错:

public class Base<T> {
    Base(List<String> list){}
}

class Child extends Base{
    Child(){
        super(new ArrayList<Integer>());
    }
}
Run Code Online (Sandbox Code Playgroud)

但同时我无法编译这个(注意Base<T>):

public class Base {
    Base(List<String> list){}
}

class Child extends Base{
    Child(){
        super(new ArrayList<Integer>());
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,第二个例子中存在"不兼容的类型",但为什么第一个例子中没有错误?它不安全并且可能导致运行时异常,不是吗?

java generics parameters constructor

9
推荐指数
0
解决办法
46
查看次数

从使用<T extends TestClass>推广的泛型方法返回此内容

为什么我不能用Java做到这一点:

public class TestClass {

    public <T extends TestClass> T test(){
        return this; // error here
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,this将永远是一个扩展的类的实例TestClass,为什么编译器不允许上面的代码?即使我会扩展TestClass当时的类型this也适合extends TestClass.我收到以下错误:

错误:(4,16)java:不兼容的类型:TestClass无法转换为T.

java generics compiler-errors return-type

6
推荐指数
1
解决办法
83
查看次数

如何在使用 pytest-qt 测试 PyQt5 应用程序时显示 GUI?

我是新来PyQt的,但我要使用pytestpytest-qt插件来测试我PyQt5的应用程序。我有一些使用SWTBot和 的Java GUI 测试经验RCPTT,在那里我可以实时查看在测试期间控件和整个 GUI 发生的情况。我想用我的新 python 工具有这样的行为,但似乎pytest-qt以某种背景方式测试 GUI。所有代码都按我的预期工作,但在测试期间我看不到 GUI。代码很简单,如教程中所示:

from tests.test import MyApp
from time import sleep
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


def test_myapp(qtbot):
    app = QApplication([])
    window = MyApp()
    # window.show()
    # app.exec_()
    qtbot.addWidget(window)
    qtbot.mouseClick(window.buttonBox.buttons()[0], Qt.LeftButton)
    sleep(5)
    assert window.label.text() == 'accept'
Run Code Online (Sandbox Code Playgroud)

如果我取消注释该window.show()行(他们在教程中这样做),我会看到一个奇怪的窗口,其中包含冻结的背景:

奇怪的窗口

我想理论上可以显示界面,因为我知道 PyQt5 从 python shell ( more ) 工作:

例如,您可以从 Python shell 提示创建小部件,与它们交互,并且仍然能够输入其他 Python 命令 …

python user-interface pytest pyqt5

2
推荐指数
1
解决办法
2164
查看次数