为什么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#中的嵌套类在以下方面有所不同? 的相关文章

  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 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