【问题标题】:Does `instanceof` produce a static type qualifier?`instanceof` 是否产生静态类型限定符?
【发布时间】:2019-05-27 10:40:34
【问题描述】:

在 Typescript 中,可以使用符号并将其签名(以及编译器知道的关于对象的所有内容)作为有效的类型限定符。这允许您这样做:

const foo: number = 3

const bar: typeof foo = 4

是否有其他语言版本?有人告诉我,在 Java 中使用 instanceof 是可能的,但除了动态类型检查之外,我很难找到关于这个关键字的任何文档。

【问题讨论】:

  • 是的,它在java中是动态的;看起来您正在寻找 cast 而不是在 java 中
  • 我认为这在 Java 中是不可能的。

标签: java typescript programming-languages static-typing


【解决方案1】:

首先:

instanceof 是否产生静态类型限定符?

一点也不。它只是一个返回布尔结果的运算符。它告诉你if A is an instance of B。不多也不少。

在 Java 中,所有类型信息(至少在运行时)都归结为 java.lang.Class 为您提供的信息。

换句话说:当你在 Java 中 int foo = 3 时,你希望得到的最好的东西就是 Class<?> bar = int.class。另请注意,没有通用的方法可以获取“某物”的 Class 对象。

使用新的var 关键字添加了唯一略微“高级体验”。这基本上允许您现在显式地写下类型,但让编译器完全处理它们。

var 为您提供的另一个语义元素:能够“命名”原本没有名称的事物:

var obj = new Object() {
  private void test() {
    System.out.println("anonymous test");
  }
};
obj.test(); // works!

(来自 java 专家时事通讯,issue 263

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多