Java Cardlayout addLayoutComponent()API

Java Cardlayout addLayoutComponent()API,java,api,swing,cardlayout,Java,Api,Swing,Cardlayout,我对用于获取当前API的逻辑有点困惑 有两个方法,一个接受字符串和组件,另一个接受对象和组件(但在运行时失败,除非该对象是字符串) 但是,不推荐使用的是接受字符串的,而不是接受对象的。在我看来,这是一种错误的方法——为什么不保留接受字符串的typesafe方法而不推荐另一个呢 接下来,在这种情况下,使用不推荐的方法并在类型安全保证中取消警告是否更好?我认为这是由于向后兼容性和LayoutManager2引入的新方法 最初,组件的所有约束都编码为字符串、“CENTER”、“EAST”,等等。对于卡

我对用于获取当前API的逻辑有点困惑

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

但是,不推荐使用的是接受字符串的,而不是接受对象的。在我看来,这是一种错误的方法——为什么不保留接受字符串的typesafe方法而不推荐另一个呢


接下来,在这种情况下,使用不推荐的方法并在类型安全保证中取消警告是否更好?

我认为这是由于向后兼容性和LayoutManager2引入的新方法

最初,组件的所有约束都编码为字符串、
“CENTER”
“EAST”
,等等。对于
卡片布局
而言,使用这些字符串作为名称是有意义的,例如
“设置卡”
“主卡”

进来了
LayoutManager 2
,这是对
LayoutManager
的一次重做。在第二个版本中,他们意识到他们也想考虑其他类型的约束,例如
GridBagConstraints

所以,
CardLayout
所做的是,它说,“好吧,好吧,我会使用这些新的奇特方法,但我仍然依赖字符串,因为我不需要其他任何东西”

由于
字符串
版本随后变得超级版本,他们选择了弃用它。(这至少是我的猜测。)

接下来,在这种情况下,最好使用不推荐使用的方法并在类型安全保证中取消警告?


在我看来,使用不推荐的方法等于说“我比Sun/Oracle API架构师更了解”。换句话说,我将远离不推荐的方法。(除此之外,其他程序员会想知道为什么代码中有一个
@superswarning

尽管您可能知道这一点,但没有必要调用
addLayoutComponent()
;容器会帮你的。