- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,如果我的问题不是新问题,但我找不到它。
现在我正在阅读 jls8,但我无法理解其中的一个定义。在章节8.1.5 Superinterfaces 我遇到了这个
给定一个泛型类声明 C<F1,...,Fn>
(n > 0),直接 super 接口(interface)参数化类类型C<T1,...,Tn>
,其中 Ti (1 ≤ i ≤ n) 是一种类型,是所有类型 I<U1 θ,...,Uk θ>
,其中I<U1,...,Uk>
是 C<F1,...,Fn>
的直接 super 接口(interface)θ 是替换 [F1:=T1,...,Fn:=Tn]。
如果我理解正确,这个定义意味着我可以分配 List<String> = ArrayList<String>
但不是例如List<String> = ArrayList<Integer>
.但我不确定。有人可以用更多细节和示例来解释这一点吗?提前致谢。
最佳答案
您引用的声明是关于 super 接口(interface)的声明,而不是关于您可以将什么分配给什么的声明。
在List<String>
的背景下,和ArrayList<String>
,声明说 List<String>
是 ArrayList<String>
的直接 super 接口(interface)。它没有说明您是否可以将一个分配给另一个。
该规范指定是否可以为 5.2 节中的变量赋值。其中,它表示扩大引用转换,这在 5.1.5 节中进一步指定。 , 被允许。我们看到从 S
开始允许扩大转换。至T
如果S
是 T
的子类型.
来自4.10部分,我们可以看到很多关于子类型的规则。最终你会发现一堆规则,当它们一起应用时,意味着 T
是 S
的直接 super 接口(interface),然后S
是 T
的子类型.
关于java - JLS8。通用类声明定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123455/
所以,我试图写一种方法来回答我之前的一个问题:How can I find out if an arbitrary java.lang.Method overrides another one?为此,
我想知道类中定义的静态方法和静态变量是否被视为该类的成员(或者术语“成员”是否仅意味着实例变量/方法和内部类) Java 中的类由哪些成员组成? 最佳答案 JLS 中成员的定义如 §8 中所定义。是:
我刚刚发现在类中的包声明之前可以写几个修饰符。似乎所有可见性修饰符以及字段修饰符都是允许的,并且所有这些修饰符都可以多次使用。声明可能如下所示: public public final static
我尝试从根本上理解 Java 中的类型转换,但无法理解 JLS 的某些部分。 特别是这个(将类类型 S 转换为类或接口(interface)类型 T 的含义): Furthermore, if the
根据 Java 语言规范 (Example 17.4-1),以下代码段(从 A == B == 0 开始)... Thread 1 Thread 2 --------
Java是语言,JRE是运行环境,JDK是开发工具? JLS 是说明 JRE 必须执行 x、y、z 的规范,因此使 Java 成为现实?这些观点是否正确,如果不正确,谁能赐教? 有没有我们认为是 Ja
请查看 Oracle Specification - Chapter 5 . 这一行: A widening primitive conversion does not lose informatio
JLS 15.13 lists examples方法引用表达式。其中之一是 (test ? list.replaceAll(String::trim) : list) :: iterator 这没有意
我在处理一些字节码时遇到了一个问题,其中某个 final String 常量没有被 java 编译器 (Java 8) 内联,请参见下面的示例: public class MyTest { pri
我有 recently discovered and blogged about the fact可以通过 javac 编译器偷偷检查异常并将其抛出到不应抛出的地方。这在 Java 6 和 7 中编译
给定以下使用 Java 8 的类 Optional : final class Main { public static void main(final String[] args) {
只是说,我的问题的重点是学会理解jls。我相信jls中的一切都是真的。 考虑 jls 的下一个片段: 8.4.8.1. Overriding (by Instance Methods) An inst
直接来自这个jls : A try-with-resources statement with a ResourceSpecification clause that declares multipl
我收到一封来自 mailing list 的邮件其中表示,如果对 volatile 变量的操作包含数据竞争,则无法应用保证(“当且仅当所有顺序一致的执行都没有数据竞争时,程序才能正确同步。” JLS
我正在阅读 jls 并遇到以下术语: return-type-substitutable 来自 jls 的片段 A method declaration d1 with return type R1
我正在为以下句子寻找合法的 JLS 引用: Vector vector = PreJava5API.getRawVector(); 最佳答案 这是给你的报价(4.8. Raw Types): The
来自Java Language Specification (third edition), section 3.10.5 : StringLiteral: " StringCharac
根据 JLS example for volatile,以下代码是否应该在 Windows 7 x86 jdk 7(打开 -ea)上抛出 AssertionError ? public class T
我对这个程序的输出有点迷惑: public class xx { public static void main(String[] args) throws Exception {
我想知道使用像这样的构造是否可靠: private static final Map engMessages; private static final Map rusMessages; static
我是一名优秀的程序员,十分优秀!