在Java中,Object
可以具有运行时类型(即创建时的类型)和强制类型(您将其强制转换为的类型)。
我想知道这些类型的 专有 名称是什么。例如
class A {
}
class B extends A {
}
A a = new B();
创建为,B
但声明为A
。引用a
每个透视图类型的正确方法是什么?
我认为,区分 对象 (存在于执行时,只是具有执行时间类型)和具有编译时类型的 表达式 (例如变量)之间,这一点很重要。
因此,在这种情况下:
A a = new B();
a
是类型的变量A
。它在执行时的值是对type对象的引用B
。
Java语言规范对对象的类型使用“运行时类”(例如,为了重载,如15.12.4.4节中所述)。在其他地方,我认为它只是将“
type”用作表达式的类型,即编译时类型。
问题内容: Java中任何对象的编译时间和运行时类型之间有什么区别?我正在阅读《有效的Java》一书,Joshua Bloch在Item 26中多次提到了数组实例的编译时类型和运行时类型,主要是为了说明抑制强制转换警告有时是安全的。 在这里,作者正在讨论数组上下文中的这些不同类型。但是通过这个问题,我想了解vs与任何类型的对象之间的区别。 问题答案: Java是一种静态类型的语言,因此编译器将尝试
问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反思来实现。 如果你确实需要类型,这是通常的(类型安全的)解决方法:
问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反射来实现。 如果你确实需要类型,这是通常的(类型安全)解决方法:
问题内容: 我正在编写一个规则引擎,该引擎执行由条件构造确定的简单分配。规则必须为XML格式,这是项目的先决条件。我已经将XML模式建模为类似于简单的代码块。我希望解析XML,然后将其转换为Java代码。然后,我希望在运行时编译(并运行)此代码。这样做意味着我的规则引擎不再充当解释器,而是执行本机Java字节码。 我已经确定了解析阶段,或多或少的Java代码生成阶段。我现在想弄清楚最后一个阶段-运
问题1: 为什么下面的代码在没有return语句的情况下进行编译? 注意:如果在while之后添加return,则会得到。 问题2: 另一方面,为什么下面的代码会编译, 即使下面的不是。
问题内容: 只是一个简单的问题:在Python中何时应使用术语“类”,何时应使用术语“类型”? “ class”仅用于用户定义的类型,“ type”是否用于内置类型? 还是现在一切都是类型…即使对于用户定义的类,我也应该始终使用“类型”吗? …? 问题答案: 它或多或少是历史的:它们很久以前就有所不同,现在不再具有实际意义。 编辑:当提到具体的实现时,我会使用“ ”;当谈到高级数据结构,应用程序体