问题标签 [nested-class]

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 投票
3 回答
7025 浏览

java - 如何运行一系列动画?AnimationSet 让我失望了

我有一个自定义视图Dial。此视图有一个自定义动画DialAnimation,它被编写为Dial. 下面是我的代码,Activity它实例化Dial并尝试对其执行一系列动画。运行代码时,屏幕上只能看到其中一个动画。我在这里想念什么?

0 投票
5 回答
238 浏览

c++ - 保持公共嵌套类的一部分仅对嵌套类可见

我在 C++ 中有一个嵌套类,它必须是公共的。但是我需要它的一些方法对外部世界可见,其余的对嵌套类可见。那是:

我希望能够编写一个使用 innerMethod() 的 set 方法。如果我把它公开,我也可以从外部访问它,这是我绝对不想要的。有没有办法在不做“朋友班集”的情况下做到这一点?

提前致谢!

0 投票
5 回答
6424 浏览

c# - 为什么类成员的名称不能与其嵌套类之一相同?

或者为什么以下不可能:

我没有看到任何可能的歧义。通过实例访问时,返回属性。静态访问时,返回类。还是我错过了什么?

我不是要求“修复”(我知道我可以将其命名为不同的名称,例如 MaterialKeys 等),但更多的是此限制背后的技术原因。

0 投票
2 回答
230 浏览

java - 我的 Swing 类中有太多嵌套类

我需要使用这些嵌套类,因为嵌套类可以使用嵌套类中的变量。如何将这些类移动到 something.java 以简化我的代码并且该类仍然具有 gui 类的控制权,例如 Jlabel?

这是显示重要部分的清洁版本

0 投票
2 回答
1960 浏览

c++ - 包括嵌套类

我有一个包含多个迭代器作为嵌套类的容器类。结构是这样的:

现在我想将迭代器移动到它们自己的头文件中,以清理容器代码。

到目前为止,这编译没有错误。但:

在 QtCreator 中的行

被标记为错误,告诉我“网格不是类型名称”。

我想我可以通过 griditerator.h 文件中的前向声明来解决这个问题:

但这给了我一个编译错误:类 Grid 与声明它的类同名。

用#include "grid.h" 替换前向声明是可行的。但不知何故,我认为这很丑陋。

所以我有两个工作选择。一个在我的 IDE 中显示了丑陋的错误,另一个我就是不太喜欢。

我尝试了其他变体,其中包含不在封闭类中,但由于不同的原因未能编译。

所以我的问题是:是否有任何“最佳实践”或包含模式来处理嵌套类太大而无法将它们保留在其封闭类文件中?

例如,是否有一种方法可以声明一个嵌套类,例如:

0 投票
2 回答
3015 浏览

java - Java:静态嵌套类和反射:“$”与“.”

如果我有一个com.example.test.Enum2.Test如下代码中的类,为什么getCanonicalName()返回com.example.test.Enum2.TestClass.forName()需要"com.example.test.Enum2$Test"作为参数?

当枚举是嵌套类时,有没有办法保持一致,以便我可以按枚举值的名称序列化/反序列化枚举值,而无需检查每个$vs可能性?.


澄清:我正在寻找一种在实际应用程序中处理这个问题的好方法(不仅仅是上面人为的测试用例),或者:

一种。使用 的输出进行序列化/反序列化getCanonicalName()(仅点名),并Class.forName()依次尝试每种可能性,例如 first "com.example.test.Enum2.Test"、 then "com.example.test.Enum2$Test"、 then"com.example.test$Enum2$Test"等。

湾。使用正确的 $ 表示法,这样Class.forName()第一次就可以正常工作。但这需要我实现一个替代 getCanonicalName() 的方法,它产生一个与Class.forName().

我倾向于方法 (b),部分原因是直觉,部分原因是方法 (a) 如果存在带有大写字母的包名称,则存在歧义: com.example.Test.Enum2 和 com.example.Test$Enum2 都可以Class.forName()如果存在 com/example/Test/Enum2.java 和包含 Enum2 内部类的 com/example/Test.java 的有效输入。

...但我不知道如何实现它。有任何想法吗?

0 投票
3 回答
1503 浏览

ruby-on-rails - 嵌套类中的 Ruby 常量。元编程

Q:如何在嵌套类中共享父类的信息

这种设计的原因,在这个例子中(实际系统要复杂得多),只是通过“包含模块”来为任何模型添加注释。那将添加控制器、视图和模型方法

所有模型的评论行为都是相似的。但是,如果需要调整某些东西,模型可能会覆盖 Comment 类中的任何方法。

棘手的部分是,模块对顶级类(Post)和同一级别的类(Comment 和Another)一无所知,但它们需要在它们上调用一些类方法

我现在正在使用 class.name 解析来获取顶级类的类名,但应该还有其他方法。

欢迎任何建议,包括更改设计。

更新

帖子和评论只是一个例子,我的项目中没有这个模型。

我正在从下划线 nonation(或 CamelCase)迁移到嵌套类(从 ArticleTranslation 到 Article::Translation)。这对我来说看起来更清楚。在以前的版本中,我使用模型名称来调用类上的类方法(在 ModelTranslation 等上)现在,在重构 lib 模块之后,我不再需要知道 model_name。

但我掉进了陷阱:在 ruby​​ 中,你可以重新开课,比如

我有一个问题:如果页面在服务器启动后立即加载——一切正常,但下一次调用该页面会引发错误:没有这样的关联;调用包含的模块方法——没有方法错误。我认为,rails 为 Post::Comment 加载了错误的文件,最糟糕的是我无法调试这个错误......但这是另一个问题。

更新2

第二个问题解决了。问题出在助手类中。

0 投票
5 回答
521 浏览

java - “静态关键字对类声明的作用与对变量或方法声明的作用不同。”

来自:Java世界

我知道static只能与嵌套类一起使用,这使得它们等同于顶级类。我也明白这使他们能够独立于封闭类进行声明。

  1. 这就是理论,任何人都可以想出一个很好的实际例子来说明我们为什么需要这样做吗?(链接中的示例很可能是内部类 AFAIK 的示例)。

  2. 另外 - 问题背后的原因 - 为什么有一个模棱两可的名字,为什么“重用”这个词static并赋予它不同的内涵?

0 投票
2 回答
2025 浏览

c++ - C++ 私有嵌套抽象类

所以也许这是一个愚蠢的问题,我想多了,但我有以下情况。我正在制作一个可以运行抽象“类动作”对象的“类 Shell”。它是唯一应该创建或使用这些对象的类。操作对象需要访问 Shell 才能对其执行特定操作,但我试图避免为此添加公共接口(不应允许其他人这样做)。

我原本有一个简单的(不那么优雅)

所以我考虑了一个嵌套类 Action,但我想把它设为私有(为什么让除了 Shell 之外的其他人做出具体的 Action,对吧?)

但是我当然不能再从 Action 继承(这是有道理的,它是私有的)。所以这行不通。

所以我的问题是,我应该使用第一种方法和友谊还是公共界面?我可以使用类似于第二种方法的方法来保持与 Actions 和 Shell 的关系吗?你有更好的主意吗?

0 投票
5 回答
23459 浏览

c++ - C++ 中的内部类会自动成为朋友吗?

如果我在 C++ 中定义一个内部类,它会自动成为包含它的类的朋友吗?例如,这是否合法:

我之所以问,是因为在我尝试过的某些编译器(VS2003)上,这段代码不起作用,但我至少听说过它确实适用于某些编译器。我在 C++ 规范中找不到关于此的相关部分,如果有人能引用一些具体的东西来说明它是否合法,那就太好了。