bn.*_*bn. 237 c c++ java design-patterns typedef
来自C和C++的背景,我发现明智的使用typedef是非常有帮助的.您是否知道在Java中实现类似功能的方法,无论是Java机制,模式还是其他一些有效的方法?
cle*_*tus 112
Java有原始类型,对象和数组,就是这样.没有typedef.
Zed*_*Zed 97
如果这是你的意思,你可以简单地扩展你想要输入类的类,例如:
public class MyMap extends HashMap<String, String> {}
Run Code Online (Sandbox Code Playgroud)
z *_* - 14
从1.6开始,java中没有typedef,你可以做的是为你想要的东西创建一个包装类,因为你不能继承最终类(Integer,Double等)
正如其他人之前提到的,
Java中没有typedef机制.
我一般也不支持"假类",但这里不应该有一般的严格经验法则:
例如,如果你的代码使用了一遍又一遍的"基于泛型的类型",例如:
Map<String, List<Integer>>
Run Code Online (Sandbox Code Playgroud)
你应该考虑为此目的设一个子类.
可以考虑的另一种方法是,例如在代码中包含减速:
//@Alias Map<String, List<Integer>> NameToNumbers;
Run Code Online (Sandbox Code Playgroud)
然后在你的代码NameToNumbers中使用并有一个预编译器任务(ANT/Gradle/Maven)来处理和生成相关的java代码.
我知道对于这个答案的一些读者来说这可能听起来很奇怪,但这是在JDK 5之前实现"注释"的框架数量,这是lombok正在做的项目和其他框架.
小智 5
确实,继承到Javaland的typedef唯一用途是别名-即为同一个类提供多个名称。也就是说,您拥有一个“ A”类,并且您希望“ B”引用同一件事。在C ++中,您将执行“ typedef BA;”。
不幸的是,他们只是不支持它。但是,如果您控制所有涉及的类型,则可以在库级别进行讨厌的破解-您可以从A扩展B或让B实现A。
也许这可能是另一个可能的替代品:
@Data
public class MyMap {
@Delegate //lombok
private HashMap<String, String> value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109417 次 |
| 最近记录: |