静态上下文中的本地类实例创建表达式

2023-12-15

The JLS 15.9.2告诉我们如何确定封闭实例: 令 C 为正在实例化的类,并令 i 为正在创建的实例。

如果 C 是一个内部类,那么我可能有一个直接封闭的 实例(§8.1.3),确定如下:

[...]

如果 C 是本地类,则:

  • 如果 C 出现在静态上下文中,则 i 没有立即包围 实例。

  • 否则,如果类实例创建表达式出现在 静态上下文,然后会发生编译时错误。

  • 否则,令 O 为 C 的直接封闭类。令 n 为 使得 O 是第 n 个词法封闭类型声明的整数 出现类实例创建表达式的类的名称。

i 的直接封闭实例是词汇上的第 n 个 附上这个例子。

我没明白粗体字是什么意思。让我提供一个我不应该被编译的例子:

class A{
    int a;
    public static void main (String[] args) throws java.lang.Exception{
        class Foo{
            void bar(){
            }
        }
        Foo f = new Foo(); //Instance creation expression occured in the static context
    }
}

DEMO

这有什么问题吗?你不能提供一个实际的例子来描述第二点吗?


您应该阅读这两行:

  • 如果 C 出现在静态上下文中,则 i 没有直接封闭的实例。

  • 否则,如果类实例创建表达式发生在静态上下文中,则会发生编译时错误。

您的情况是第一种情况 - 您定义了该类Foo在静态上下文中(main方法),因此实例f没有封闭实例。

但是,如果您定义该类Foo之外的main方法,并尝试创建实例Foo in the main方法,你会得到一个错误,除非你改变Foo成为静态类。

class A
{
    int a;
    class Foo
    {
        void bar()
        {
        }
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        Foo f = new Foo(); // this should fail
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态上下文中的本地类实例创建表达式 的相关文章

  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • Spring Boot 不允许 URL 中通过百分比和反斜杠

    我们收到一个 get 请求 该请求在 url 中发送字符串字符 因此我们使用路径变量来接收它们 显然 调用服务无法更改其调用后端的方法 因此我们需要能够接受包含以下未编码字符的 url 当发送百分号 时 将返回 http 400 如果 后面
  • 为什么我们将 Loggers 声明为 static Final?

    在 Java 中 为什么声明记录器是最佳实践static final private static final Logger S LOGGER private 这样其他班级就不能hijack你的记录器 static 因此每个类只有一个记录器
  • 如何用 C# 编写解析器? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何用 C 编写解析器 递归下降 现在我只想要一个简单的解析器来解析算术表达式 并读取变量 虽然后来我打算编写一个 xml 和 html 解析器 用于学习目的 我这样做是因为解析
  • 所有 BlackBerry 设备的 UI 兼容性

    我为 BlackBerry 编写了一个简单的应用程序 并使用 9630 模拟器进行了测试 如何获得与所有模拟器兼容的 UI 设计 测试 测试 测试 如果您需要您的应用程序在所有模拟器上运行 那么获取所有模拟器并尝试一下 轮缘做得很好为您提供
  • 在python中读取PFM格式

    我想读书PFM使用 Python 格式化图像 我尝试过imageio read但它抛出一个错误 请问我可以有什么建议吗 img imageio imread image pfm 以下 Python 3 实现将解码 pfm 文件 下载示例纪念
  • 无法将 create_async() 与 WRL WinRT 组件一起使用

    我想使用 WRL 编写一个支持异步的 WinRT 组件 但我发现create async 即使我包括了 也是未定义的ppltask h and using namespace concurrency如何使用WRL模式创建后台任务 我的功能是
  • 获取 Spark ML 多层感知器分类器的输出层神经元值

    我正在使用 Spark ML 多层感知器分类器进行二元分类 mlp MultilayerPerceptronClassifier labelCol evt featuresCol features layers inputneurons i
  • map(&:name) 在此 Ruby 代码中做了什么?

    为了更好地理解 Ruby 我在网上冲浪时遇到了以下代码 require rubygems require activeresource ActiveResource Base logger Logger new File dirname F
  • 如何更改 Android M 中拒绝/授予的权限?

    我怎样才能让用户有机会更改应用程序中的权限 他已经设置了授予 拒绝 假设用户拒绝了权限 稍后他希望我们授予此许可 是否可以 我怎样才能做到这一点 如果用户拒绝了该权限 您可以检查该权限 如果他也检查了不再显示 在这种情况下 您可以打开自己的
  • 基于范围的 for 循环中 range-init 的生命周期是多少?

    在最新的 C 标准中 它意味着 for foo bar baz 相当于 auto r bar for auto it r begin end r end it end it foo it baz 当上面的 bar 是一个返回集合的函数调用时
  • 带 Break 的无法到达语句

    所以我之前有一个问题 但意识到我发布了错误的违规代码 我已在下面标记了令人反感的言论 我想要做的是使用该 switch 语句设置每个运算符的优先级 也许有人可以指出我正确的方向 请注意 我正在运行 JAVA 7 因此 String Swit
  • boost::function 和 boost::bind 如何工作

    我不喜欢让魔术盒散布在我的代码中 这两个类到底是如何工作的 以允许基本上任何函数映射到函数对象 即使函数具有与我传递给的参数完全不同的参数集boost bind 它甚至适用于不同的调用约定 即成员方法是 thiscall在VC下 但 正常
  • SQL Access INSERT INTO 失败

    我正在尝试制作一个使用 OLEDB 连接到 Microsoft Access 数据库的 Visual Basic 应用程序 在我的数据库中 我有一个具有以下布局的用户表 ID Autonumber Username Text Passwor
  • 动态设置自动管道的参数值

    如果我创建一个参数 我可以在手动运行管道时设置其值 但是当管道自动运行时 它使用默认值 当管道自动运行时 例如响应推送到存储库 是否有任何方法可以向其传递参数值 这是我正在使用的 yaml 文件 目标是能够控制在管道中运行哪些测试 para
  • DataGridView 和 List<> 与 BindingSource 的数据绑定

    我想弄清楚数据如何绑定BindingSource应该可以工作 我想要一个DataGridView填充 a 的内容List lt gt 更新列表后 我可以看到List当我检查调试器时 增长并验证它是否被填充 我以为BindingSource当
  • 如何让 TFS 2010 检测对 Visual Studio 之外的文件所做的更改?

    我将 Team Foundation Server 2010 与 Visual Studio 2010 结合使用 每当我在 Visual Studio 之外修改文件时 TFS 似乎都没有检测到对文件所做的更改 因此不提供在修改文件后签入文件
  • 如何在 R 中正确嵌套 Paste() 函数?

    你能告诉我为什么吗 paste paste c first second collapse third collapse and 给我 first second third 代替 first second and third 获得第二个输出
  • 如何在Python中使用mysqldump和mysql复制数据库?

    我正在编写一个简单的 Python 脚本来复制 MySQL 数据库 我正在尝试根据以下问题及其答案复制数据库 不使用 mysqldump 复制数据库 python 子进程和 mysqldump and Python 子进程 mysqldum
  • Java中谷歌计算引擎与数据存储和云存储的通信

    我有 GAE 应用程序 它在 Google Cloud Datastore 中创建一些数据并将一些二进制文件存储到 Google Cloud Storage 让我们调用该应用程序WebApp 现在 我在 Google Cloud Stora
  • 静态上下文中的本地类实例创建表达式

    The JLS 15 9 2告诉我们如何确定封闭实例 令 C 为正在实例化的类 并令 i 为正在创建的实例 如果 C 是一个内部类 那么我可能有一个直接封闭的 实例 8 1 3 确定如下 如果 C 是本地类 则 如果 C 出现在静态上下文中