为什么java中的嵌套类与C#中的嵌套类在以下方面有所不同?

2024-04-24

我发现了一些类似的帖子,但找不到明确解释这一点的答案。 我已经执行了类的嵌套,即“内部”类存在于“外部”类中,并尝试实例化内部类,这就是我遇到的场景

如果是 C#:

    class outside
    {
        public class inside
        {
            public void print()
            {
                System.Console.WriteLine("I am inside");
            }
        }
    }
    class Program
    {
        public static void Main(string[] args)
        {
            /* here i am trying to instantiate the inner class 'inside' */
            outside.inside obj = new outside.inside();
            obj.print();
            Console.ReadKey();
        }
    }

Output:

我在里面 所以,上面的工作正常..但是,
如果是 Java:

class outside
{
    public class inside
    {
        public void print()
        {
            System.out.println("I am inside");
        }
    }
}
class Demo
{
    public static void main(String[] args)
    {
        /* here i am trying to instantiate the class 'inside' */
        outside.inside obj=new outside.inside();
        obj.print();
    }
} 

Output:

Demo.java:16:错误:包含的封闭实例 外部.内部是必需的...

这是 Java 的情况。这个错误是什么?

这是否意味着外部类“outside”无法使用点运算符访问内部类“inside”,因为它不是静态的?如果是这样,那么为什么在 C# 中不会生成编译错误?


问题在于,按照 Java 中声明类的方式,内部类具有对某个对象的隐式引用。instance外层阶级的。因此,错误消息为:“错误:需要包含 Outside.inside 的封闭实例”。这意味着您需要:

Outside out = new Outside();
Outside.Inside in = out.new Inside();

一般来说,这种模式在 Java 中用于这样的情况:如果没有外部类的实例,内部类的实例的存在就没有意义;并注意内部类实例将有权访问外部类实例的所有变量,甚至是私有变量。但一般来说,这样的类一般都是private.

为了让这种情况消失,你必须创建内部类static。然后你将能够执行以下操作:

Outside.Inside in = new Outside.Inside();

编辑:完成什么static在Java中的意思是:staticJava 中的任何内容(变量、类、方法)都可以在类中访问and实例级别。例如,您可以从非静态方法访问静态变量(这也意味着您可以从类的实例调用静态方法!);但静态方法不能访问非静态变量,也不能调用“仅实例”方法等。

此外,“顶级”课程不能static,因为这没有意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么java中的嵌套类与C#中的嵌套类在以下方面有所不同? 的相关文章

  • 带有 Spock Stub 的泛型

    我无法为泛型类编译 Spock 存根 构造函数的签名如下 SomeClass SerSup
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • 恢复多个监视器的窗口大小/位置

    许多帖子都涉及恢复 WinForm 位置和大小 例子 www stackoverflow com questions 92540 save and restore form position and size http www stacko
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 如何找到 QDockWidget 标题栏的高度?

    我正在尝试找到 a 的高度QDockWidget标题栏 以便对自定义布局进行一些智能调整大小 但标题栏不是单独的小部件 它内置于停靠小部件的私有布局中 并且没有成员可以访问它 还有其他方法可以找到它的高度吗 是的 您可以使用以下命令找到标题
  • JVM 是否会内联对象的实例变量和方法?

    假设我有一个非常紧密的内部循环 每次迭代都会访问和改变一个簿记对象 该对象存储有关算法的一些简单数据 并具有用于操作它的简单逻辑 簿记对象是私有的和最终的 并且它的所有方法都是私有的 最终的和 inline 下面是一个示例 Scala 语法
  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • 尝试将过滤器添加到 Grizzly+Jersey 应用程序时出现问题

    我有这个服务器初始化类 package magic app main import org glassfish grizzly http server HttpServer import org glassfish jersey grizz
  • 我应该在查询时调用 ToListAsync()

    不久前 我开始接触 C 并正在寻找一些如何编写代码的最佳实践 现在 我正在使用 EF Core 并具有以下代码 var details dbContext Details Where x gt x Name Button foreach v
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • 遍历多行字符串

    我得到一些数据 def data some useless text n even more n finally interesting text 我怎样才能得到其中 有趣的部分 所以基本上所有行都不是以 开头的 Groovy 的一种选择是
  • 如何使用实体框架更新特定记录的一个字段?

    我想要更新一个名叫 Pejman 的人的家庭情况 这是我的对象类 public class Person public int Id get set public string FirstName get set public string
  • 创建 .ICS 文件,添加到 Outlook

    我正在创建一个简单的应用程序 允许用户下载 ICS 文件 并将其导入到他们选择的日历应用程序 站点中 我对创建过程感到满意 但对在 Outlook 中打开它们有疑问 将使用C ASP NET进行开发 当我打开一个日历时 它会添加一个新日历
  • Spring Boot MultipartFile上传getOriginalFileName根据浏览器不同而不同

    我使用的是 spring boot 1 5 7 RELEASE 版本 我使用以下方法上传文件 Autowired private MyService mySerice RequestMapping value uploadFile meth
  • 如何使用 Java 11 和 JavaFX 11 运行 ControlsFX 示例应用程序

    ControlFX 网站 http fxexperience com controlsfx says 如果您想使用 ControlsFX 示例应用程序 只需 下载 ControlsFX 版本并在上运行以下命令 命令提示符 请务必将 替换为实
  • C/C++ 特殊 CPU 功能的使用

    我很好奇 新的编译器是否使用了新 CPU 中内置的一些额外功能 例如 MMX SSE 3DNow 所以 我的意思是 在最初的 8086 中甚至没有 FPU 所以旧的编译器甚至不能使用它 但新的编译器可以 因为 FPU 是每个新 CPU 的一
  • 在 Qt C++ 中使用多个键

    我正在构建 坦克 游戏 我使用关键事件在地图上运行我的坦克 实际上我当时只能使用一把钥匙 但我需要有能力去完成任务 同时向上和离开 这是我的单键事件代码 switch event gt key case Qt Key Up if ui gt
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • 从 Web 服务器异步调用应用程序

    我有一个用 Spring 制作的 在 Tomcat 上运行的 Web 应用程序 在同一台机器上有一个普通的 Java 应用程序 我想通过从Web服务器调用Java应用程序来执行它 但我想让应用程序不会使用服务器的资源 它涉及分类器的训练 因

随机推荐

  • Slim 框架总是返回 404 错误

    这些天我正在使用纤薄的框架作为我开发 php web api 的最简单的工具 使用这两篇 文章 科恩拉茨 http coenraets org blog 2011 12 restful services with jquery php an
  • 登录失败时生成 Python PXSSH GUI

    当登录失败时 我无法阻止 GUI 的生成 失败并生成 GUI 的简单示例 gt gt gt import pxssh gt gt gt gt gt gt ssh pxssh pxssh gt gt gt ssh force password
  • Android SmsManger 发送报告

    我向多个联系人发送多条消息 并为每个联系人使用以下代码 private void sendSMS String first String last String id String phoneNumber try String messag
  • 如何使 XML 字符串加粗、下划线等?

    http docs fusioncharts com charts contents Styles Font html http docs fusioncharts com charts contents Styles Font html
  • 将 UTC 日期转换为本地日期

    我正在将纪元时间 UTC 格式 转换为如下所示的格式 现在我尝试了不同的答案来转换UTCDate from UTC到当地时间 但我没有得到当地时间 任何帮助 将不胜感激 String epochTime 1436831775043 Date
  • 如何使用 Perl 的 LWP 提取网站的 XML 并保存在文件中?

    如何从网站提取信息 http tv yahoo com listings http tv yahoo com listings 然后创建一个 XML 文件 我想保存它以便稍后解析并使用 JavaScript 显示信息 我对 Perl 很陌生
  • mysql 中临时表的旧代码 TYPE=HEAP 错误

    我有一个可以运行的旧代码 CREATE TEMPORARY TABLE temp tree id INTEGER parent id INTEGER type HEAP 现在我有 mysql 5 并且这段代码不起作用 在内存中创建临时表的正
  • CreateProcess错误=740,请求的操作需要提升

    我有一个定期更新的网络小程序 我最终决定制作一个更新程序 但是 当我用 java 下载更新时 它下载得很好 但是 当我尝试使用以下命令解压 运行更新时Runtime getRuntime exec pathToFile I get Crea
  • 如何使用 Perl 提取 HTML 标题?

    有没有办法使用 Perl 提取 HTML 页面标题 我知道它可以在表单提交期间作为隐藏变量传递 然后以这种方式在 Perl 中检索 但我想知道是否有一种方法可以在不提交的情况下执行此操作 比如说 我有一个这样的 HTML 页面 然后在 Pe
  • 打印的条形码不清晰 (WPF)

    我的应用程序中需要条形码打印模块 但无法弄清楚如何正确打印条形码 看来分辨率太低了 我在用着禅宗条形码 https barcoderender codeplex com 正如您在所附照片中所看到的 顶部条形码是从打印机软件打印的 证明打印机
  • 注册不起作用,注册未定义错误 React Native

    我刚刚从 Udemy 购买了 React Native 的课程 Stephen Grider 是该课程的作者 所以基本上我是在他打字的时候和他一起打字的 但不幸的是我在跟踪应用程序的注册过程中陷入了错误 每当我在输入电子邮件和密码后单击 注
  • 如何在列表/字符串/范围中查找指定项目后面的特定项目?

    给定一个input任何类型的序列 列表 字符串 范围 如何找到下一个项目input遵循指定项目 另外 如果该项目不存在或后面没有任何内容 该函数应该返回None 我尝试将输入类型转换为列表 然后从列表中查找位置 然后获取下一个项目 但这并不
  • 如何使用 JDBC 进行扩展插入而不构建字符串?

    我有一个应用程序可以解析日志文件并将大量数据插入数据库 它是用 Java 编写的 并通过 JDBC 与 MySQL 数据库通信 我尝试了不同的插入数据的方法 以找到适合我的特定用例的最快方法 目前看来表现最好的方法是发出扩展插入 例如 具有
  • 在 Android 锁屏上显示自定义信息 [重复]

    这个问题在这里已经有答案了 我想自定义锁屏 The default Lock screen is like this 我想修改锁定屏幕的这一部分并让所有其他内容保持不变 当用户锁定手机时 它应该在红色框中显示自定义信息 到目前为止 我已经看
  • mockk java.lang.AssertionError:验证失败:调用 1 of 1:未调用

    我正在使用模拟运行单元测试 当尝试验证方法时 我收到断言错误 并且不知道如何运行测试 这是我的测试方法 get Rule var rule TestRule InstantTaskExecutorRule val autoDownloads
  • Django 中的内联表单集 - 删除某些字段

    我需要创建一个内联表单集 a 排除一些字段MyModel完全显示出来 b 显示一些字段MyModel但阻止它们被编辑 我尝试使用下面的代码 使用values 为了将查询集过滤为我想要返回的值 然而 这失败了 有人有什么想法吗 class P
  • DataDog 事件会自动恢复

    我创建了一个事件监视器 用于捕获有错误的事件 并通过特殊的信使通知有关警报的信息 一切都很顺利 但我注意到此类警报会自行自动恢复一段时间 As I understand it is because of this parameter 因此
  • VB.NET中获取CheckBoxList的所有选中值

    我用过ASPCheckBoxList控制 现在我想要的是在VB代码中获取所有选定的值 HTML
  • 查找包含相似字符串的sql记录

    我的下表有 2 列 ID 和标题 其中包含超过 500 000 条记录 例如 ID Title 1 Aliens 2 Aliens 1986 3 Aliens vs Predator 4 Aliens 2 5 The making of A
  • 为什么java中的嵌套类与C#中的嵌套类在以下方面有所不同?

    我发现了一些类似的帖子 但找不到明确解释这一点的答案 我已经执行了类的嵌套 即 内部 类存在于 外部 类中 并尝试实例化内部类 这就是我遇到的场景 如果是 C class outside public class inside public