我对用于到达 addLayoutComponent() 的当前API的逻辑有些困惑。

有两种方法,一种采用字符串和一个组件,另一种采用对象和一个组件(但是在运行时会失败,除非该对象是字符串。)

但是,不赞成使用的是采用字符串的一种,而不是采用对象的一种。我认为这是错误的方法-为什么不保留采用字符串的typesafe方法并弃用另一个方法呢?

然后,在这种情况下,最好使用不推荐使用的方法并在类型安全保证附带时取消警告吗?

最佳答案

我相信这是由于向后兼容以及LayoutManager2引入的新方法。

最初,组件的所有约束都被编码为字符串,"CENTER""EAST"等。对于CardLayout,使用这些字符串作为名称是有意义的,例如"SETTINGS_CARD""MAIN_CARD"等。

出现了LayoutManager2,它是LayoutManager的翻版。在第二个版本中,他们意识到他们也希望允许其他类型的约束,例如GridBagConstraints等。

因此,CardLayout的意思是,“好吧,我将使用这些新的奇特方法,但我仍将依靠字符串,因为我不需要任何其他东西”。

由于String版本变得多余,因此他们选择弃用它。 (至少这是我的猜测。)

接下来,在这种情况下,使用不推荐使用的方法并抑制类型安全保证附带的警告会更好吗?

在我看来,使用不赞成使用的方法等同于说“我比Sun / Oracle API架构师了解得多”。换句话说,我将远离过时的方法。 (除了其他程序员之外,其他程序员也会想知道为什么您的代码中有一个@SupressWarning。)

关于java - Cardlayout addLayoutComponent()API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7160172/

10-10 05:15