问题标签 [inner-classes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3632 浏览

c# - c#中的Java内部类

我有以下 Java 代码:

产生 666 和 999。现在,我尝试在 c# 中设置类似的代码,但似乎不可能完成相同的操作。如果是这样的话,你通常在用 c# 编程时如何实现类似的效果?

0 投票
13 回答
87426 浏览

java - 接口内的内部类

是否可以在接口中创建内部类
如果可能,为什么我们要创建这样的内部类,因为我们不打算创建任何接口对象?

这些内部类在任何开发过程中都有帮助吗?

0 投票
2 回答
1064 浏览

scala - 如何访问 Scala 中的“覆盖”内部类?

我有两个特征,一个扩展另一个,每个都有一个内部类,一个扩展另一个,具有相同的名称:

如何访问A.X班级正文中的C班级?重命名B.X不隐藏A.X不是首选方式。

为了让事情变得有点复杂,在我遇到这个问题的情况下,特征具有类型参数(本示例中未显示)。

0 投票
3 回答
648 浏览

java - 合成方法的好处是什么?

问题

一位朋友提出了一个有趣的问题。给定以下代码:

从外部类,我如何打印message变量内容?当然,不允许更改方法或字段的可访问

这里的来源,但它是一个法国博客)


解决方案

解决这个问题的代码如下:

请注意,access$000方法名称并不是真正标准的(即使这种格式是强烈推荐的格式),并且某些 JVM 会命名此方法access$0。因此,更好的解决方案是检查合成方法:


所以这个问题的有趣之处在于突出了合成方法的使用。使用这些方法,我可以像在解决方案中那样访问私有字段。当然,我需要使用反射,而且我认为使用这种东西可能会很危险......

问题

作为开发人员,对我来说,合成方法的兴趣是什么?什么是使用合成物有用的好情况?

0 投票
1 回答
833 浏览

java - 为什么我们可以有静态最终成员但不能在内部类中有静态方法?

为什么我们可以有静态最终成员但不能在非静态内部类中有静态方法?

我们可以在不实例化内部类的情况下访问外部类之外的内部类的静态最终成员变量吗?

0 投票
2 回答
449 浏览

java - 为什么我的内部类看到一个非静态变量?

早些时候,当内部匿名类没有看到“外部”类的字段时,我遇到了问题。我需要制作一个最终变量以使其对内部类可见。现在我有一个相反的情况。在“外部”类“ClientListener”中,我使用内部类“Thread”和“Thread”类,我有“run”方法,并且确实从“outer”类中看到了“earPort”!为什么?

0 投票
2 回答
136 浏览

java - 从封闭的成员类(Java)访问阴影字段

是否可以从 Java 中的封闭类访问封闭类的阴影字段?

0 投票
2 回答
5507 浏览

java - 没有内部类的 Json Jackson 反序列化

我有一个关于使用 Jackson 进行 Json 反序列化的问题。我想使用类似这样的类来反序列化 Json 文件:(取自http://wiki.fasterxml.com/JacksonInFiveMinutes

可以通过这种方式使用所谓的“完整数据绑定”对 Json 文件进行反序列化:

我的问题是内部类“名称”的使用。我想在不使用内部类的情况下做同样的事情。“用户”类会变成这样:

这意味着找到一种方法来向映射器指定所有必需的类以执行反序列化。

这可能吗?我查看了文档,但找不到任何解决方案。

我的需求来自于我使用 Javassist 库来创建这样的类,并且它不支持内部类或匿名类。

先感谢您

0 投票
2 回答
2175 浏览

java - 泛型内部类继承的编译错误与边界扩展

使用内部类编译泛型类时遇到问题。该类扩展了一个泛型类,也扩展了内部类。

这里实现的接口:

通用超类:

带有编译器错误的泛型子类:

错误是:

怎么了?代码用 eclipse 编译,但不能用 java 5 编译器编译(我在 mac 和 eclipse 3.5 上使用 ant 和 java 5)。不,我无法将其转换为静态内部类。

0 投票
2 回答
615 浏览

scala - 如何在 Scala 中将对象用作模块/函子?

我想将对象实例用作模块/函子,或多或少如下所示:

这样我就可以为每个晶格创建一个不同的微积分实例(我将执行的操作需要晶格的最大值和最小值的信息)。我希望能够混合相同微积分的表达式,但不允许混合不同的表达式。到现在为止还挺好。我可以创建我的微积分实例,但问题是我不能在其他类中编写函数来操作它们。

例如,我正在尝试创建一个解析器来从文件中读取表达式并返回它们;我还尝试编写一个随机表达式生成器,以便在我的 ScalaCheck 测试中使用。事实证明,每次函数生成一个 Expr 对象时,我都不能在函数之外使用它。即使我创建了 Calculus 实例并将其作为参数传递给将生成 Expr 对象的函数,该函数的返回也不会被识别为与在函数外部创建的对象的类型相同。

也许我的英语不够清楚,让我尝试一个我想做的玩具示例(不是真正的 ScalaCheck 生成器,但足够接近)。

现在,如果我尝试编译上面的代码,我会得到很多

如果我尝试执行以下操作,也会发生同样的情况:

请注意,生成器本身并不重要,但我需要在系统的其余部分上做很多类似的事情(即创建和操作微积分实例表达式)。

难道我做错了什么?有可能做我想做的事吗?

非常需要和赞赏有关此问题的帮助。提前非常感谢。


在收到 Apocalisp 的回答并尝试之后。

非常感谢您的回答,但仍然存在一些问题。建议的解决方案是将函数的签名更改为:

我更改了所有相关函数的签名:getRndExpr、getRndVal 和 getRndVar。而且我在调用这些函数的任何地方都收到相同的错误消息,并收到以下错误消息:

由于编译器似乎无法找出正确的类型,我将所有函数调用更改为如下所示:

在此之后,在前 2 个函数调用(genRndVal 和 genRndVar)中没有编译错误,但在接下来的 3 个调用(对 genRndExpr 的递归调用)中,函数的返回用于构建一个新的 Expr 对象我得到了以下错误:

所以,再一次,我被困住了。任何帮助将不胜感激。