【问题标题】:Are Java's primitives first class citizens?Java的原语是一等公民吗?
【发布时间】:2014-11-09 17:09:37
【问题描述】:

在 Gerald Jay Sussman 和 Harry Abelson 的 Structure and Interpretation of Computer Programs 中,一等公民被描述为:

  • 它们可以由变量命名。
  • 它们可以作为参数传递给过程。
  • 它们可能作为过程的结果返回。
  • 它们可能包含在数据结构中。

对我来说,这意味着原始数据类型是一等公民。但是,有些questions and answers 我看到了将原语视为非一等公民的答案。

问题是:Java 的原语是一等公民吗?

【问题讨论】:

    标签: java oop


    【解决方案1】:

    根据您问题中的定义,是的。其他人使用的定义可能与您问题中的定义不同。如果你使用不同的定义,那么他们可能不符合它。例如,在您链接的the answer 中,问题所暗示的定义将涉及它们从Object 派生,当然它们不是,因此根据那个定义,它们不是t.

    这一切都归结为“一等公民”的意思。

    【讨论】:

    • 您是说基本上任何东西都可以成为一等公民,只要您以这种方式定义“一等公民”。一等公民必须支持其他实体普遍可用的所有操作。基元不能用作泛型的类型参数,所以我觉得在一般意义上,它们不是一等公民(虽然可能看起来像一个宽泛的定义,但并不像你实际定义的那么宽泛)
    • @VinceEmigh:如果是,我会远离整个学期,我认为这没什么用。也就是说,对我而言,您所暗示的定义将比 OP 问题中的定义更适合我的看法。毫无疑问,你可以用类做一些你不能用原语做的事情,所以......
    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2011-12-25
    • 2020-08-19
    • 2015-09-18
    相关资源
    最近更新 更多