【发布时间】:2011-02-07 20:26:55
【问题描述】:
在 Java 中:如何访问动态引用类的静态属性? 我举一个简短的例子:
AppleTree.areTheyAllGrown=true;
我只是想动态引用静态属性“areTheyAllGrown”的类。这个静态属性可以是 AppleTree 的成员,也可以是其他类的成员,当然也有相同的命名静态属性:“areTheyAllGrown” .
只要我的应用程序逻辑需要我有许多其他树类型,如 CherryTree、ApricotTree 等,这意味着接口 TreeBehaviour 将不足以解决问题,因为通过专门设置 AppleTree 的“areTheyAllGrown”,我想标记比方说:只有我的 AppleTree 实例,而不是所有的 Tree 实例。看到了吗?
你会说:创建一个 AppleTreeImpl 接口并将属性放在那里......好吧..这将迫使接口地狱,只为一个属性创建......为我所有不同的树类型创建 Impl 接口?没有更短的解决方案吗?
当然,我看到了许多其他方法来实现整个东西,并解决动态引用类的需要,但是,如果我能通过这种方法特别地做到这一点,我很感兴趣。也无需过多使用接口或其他辅助类,也无需在 Tree 类之外使用公共属性。
【问题讨论】:
-
(如果有人建议反思,我会很生气。)
-
嗯,反思是做他所描述的事情的唯一方法。做其他事情肯定是一个更好的主意。我建议使用
Map<Class<? extends Tree>, Boolean>(实际上是一个集合)。 -
@Tom 哈哈,很有趣。在这种情况下还有什么建议?
-
@maaartinus 地图如何成为一个集合?
-
这根本不是静态字段的用途。
标签: java class syntax static properties