根据我的理解,班级代表团应该这样做
允许对象组合实现与继承相同的代码重用.[维基百科]
Kotlin支持类委派,并在文档中注明以下声明:
覆盖按预期工作:编译器将使用覆盖实现而不是委托对象中的覆盖实现.
考虑到这一点,请考虑以下最小示例:
interface A {
val v: String
fun printV() {
Logger.getLogger().info(Logger.APP, "A", v)
}
}
class AImpl : A {
override val v = "A"
}
class B(a: A) : A by a {
override val v: String = "B"
}
Run Code Online (Sandbox Code Playgroud)
我预计B(AImpl()).printV()会打印B,但是它打印A,即它使用默认的实现AImpl.
此外,如果我printV()使用super实现覆盖B中的方法,即
class B(a: A) : A by a {
override val v: String = "B"
override fun printV() { …Run Code Online (Sandbox Code Playgroud) 我只是想让 QDialog 中的一些元素闪烁(改变背景颜色)。
现在最好我希望能够使用已经存在的东西并封装闪烁状态,即使用 css3 闪烁,或者可能使用QPropertyAnimation?
由于我没有找到有关该选项的任何好的信息,因此我尝试了不太理想的解决方案:
对话摘录__init__:
self.timer = QTimer()
self.timer.timeout.connect(self.update_blinking)
self.timer.start(250)
self.last_blinked = None
Run Code Online (Sandbox Code Playgroud)
和
def update_blinking(self):
self.frame.setStyleSheet(
self.STYLE_BLINK_ON if self.blink else self.STYLE_BLINK_OFF)
self.blink = not self.blink
Run Code Online (Sandbox Code Playgroud)
其中STYLE_BLINK_ON和STYLE_BLINK_OFF是一些指定背景颜色的 css。那行得通,但是
2. 解释:假设应该闪烁的小部件是一个框架。当单击该框架内的按钮时,clicked如果在释放鼠标按钮之前发生框架的样式更新,则不会发出信号。
一个完全不同的解决方案,它封装了一些东西,不需要我手动启动一个计时器,当然是首选。但是,如果有人至少提出解决第 2 点的解决方案,我将不胜感激。
我正在使用 Spring Boot 1.5.9 来开发我的应用程序。我需要实现 jwt 身份验证,并且我使用了 jjwt 库。以下代码来自我的自定义身份验证安全过滤器,它继承自OncePerRequestFilter. 在这里,我尝试从令牌解析用户名,当自动解析用户名时,会进行 jwt 验证,并检查令牌的过期时间。我调试它并且它有效,所以接下来我想向客户端应用程序发送正确的消息,说明身份验证失败的原因。我想抛出一个 ExpiredJwtException 并使用格式化输出的控制器建议来处理它。
这是异常抛出:
try {
username = jwtTokenService.getUsername(authToken);
} catch (IllegalArgumentException e) {
logger.error("an error occured during getting username from token", e);
} catch (ExpiredJwtException e) {
logger.warn("the token is expired and not valid anymore", e);
throw new ExpiredJwtException(e.getHeader(), e.getClaims(), e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器建议,JwtException 是 ExpiredJwtException 的基类,我抛出它,所以它应该可以工作。我也尝试在ExceptionHandler中直接使用ExpiredJwtException,但效果不佳。接下来我想用同样的方式处理另一个异常。
@ControllerAdvice
public class GlobalControllerExceptionHandler {
@ExceptionHandler(Exception.class)
public @ResponseBody
ResponseEntity<Map<String, Object>> handleException(Exception ex) {
Map<String, Object> errorInfo = new HashMap<>();
errorInfo.put("message", …Run Code Online (Sandbox Code Playgroud) 我想创建具有以下属性的Matrix2D类:
我该怎么做?这是我的草图:
class Matrix2D<T> : Cloneable, Iterable<T> {
private val array: Array<Array<T>>
// Call default T() constructor if it exists
// Have ability to pass another default value of type
constructor(rows: Int, columns: Int, default: T = T()) {
when {
rows < 1 -> throw MatrixDimensionException("Number of rows should >= 1")
columns < 1 -> throw MatrixDimensionException("Number of columns should be >= 1")
}
array = Array(rows, { Array(columns, { default }) }) …Run Code Online (Sandbox Code Playgroud)