为什么Java没有宏?

Cel*_*tas 2 c java language-agnostic variables macros

在课堂上,教授说他比C更喜欢C的一个原因是C有一个预处理器,特别是宏.使用所需的值声明final/ const变量对宏有什么好处?我知道Java没有全局变量,所以是否会出现使用变量替换宏的情况不起作用的情况?

Kri*_*ski 5

在C中使用宏系统一直是一个长期存在的传统,经常导致难以理解的构建链,以及非常项目特定的构建配置.我认为C中存在宏的原因是为了克服它作为一种语言的缺点,当你需要宏提供的东西时(例如,你可以在Java中使用接口来解决需要制作的问题)通用的"实例".

尽管如此,有时候宏观系统似乎更容易适应问题.我知道有些商店会这样做 - 例如 - 当他们需要支持多个不同版本的API时.通常,您可以通过在设计中正确使用接口和良好的抽象层来克服Java中的这个问题.但是,那里有Java的宏系统!如果你愿意,你可以使用它们.你可能还会注意到,就宏来说,C宏并不是什么特别的东西.

(在我看来,你的老师有点偏离......)

  • 你的"答案"比其他任何东西都更令人困惑...... (2认同)
  • @Asblarf所以不要投票.你没有提供任何理由说明为什么我的答案是坏的,但如果你认为我真的搞砸了,继续,我不会采取个人冒犯,但我建议你解释为什么你这么认为而不仅仅是给予一个相当侮辱的敲门声 (2认同)