SWTException: Subclassing not allowed

由于设计了一个类继承Shell,导致出现了“SWTException: Subclassing not allowed”错误。搜索了一下才知道, Shell 是可以被继承的,但 Shell 的父类 Decorations 有一个 checkSubclass () 函数,当其子类不符合此方法的检查规则时,就会抛出异常。因此不是简单继承 Shell 就行了的,还要做一些比较复杂的工作。

因此我们有三种方式可以解决这类异常:

  1. 聚合优于继承,采用聚合方式解决,也符合面向对象的设计原则
  2. 重写 checkSubclass ()方法,去掉基类的验证检查
  3. 加上“package org.eclipse.swt.widgets”,让被扩展的类与扩展类处于同一类层次
yava /
in categories tagged with