如何限制匿名子类的创建(Java)

2024-07-04

抱歉,我之前没有正确表述这个问题。我尝试实现工厂模式。一个更好的例子:它是一个带有 create 函数的抽象类 Human。根据创建时传递的参数,它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例。因此,您可以使用以下命令调用 create:Human john = Human.create("Man");子类 Man 和 Woman 继承自抽象类 Human,并在与 Human 相同的文件中定义。我不希望可以通过以下方式扩展它:Human lisa = new Human("woman") {};从主程序来看。谢谢!

EDIT:

感谢您的帮助!我最终使用的解决方案是让类Human成为公共的,以及它的函数create。 Human 构造函数以及 Man 和 Woman 类被声明为“受包保护”。


不要在 A 的类声明中使用可见性说明符,它将是一个包访问类。

编辑以反映有问题的更改:

选项1: 将 Human 包的构造函数设为私有。通过这样做,任何试图在包之外扩展 Human 的类都将失败,因为它无法调用超类的构造函数。

选项2: 坚持我最初的包私有类建议,并使用公共访问工厂类。

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

如何限制匿名子类的创建(Java) 的相关文章

  • Java Web 应用程序的关闭钩子

    我需要在 java web 应用程序停止或 tomcat 停止时保存一些数据 如何才能做到这一点 编辑 如果我使用 jvm shutdown hook 有什么缺点吗 使用一个实现的类ServletContextListener https
  • 在Java中,如何在TextArea中使用多线程?我需要同步我的线程吗?

    我对 Java 和多线程缺乏经验 所以也许你们可以提供帮助 当我使用多线程时 我在打印 TextArea 框中的一系列数字和字母时遇到问题 这是我的代码 public class MultiThread extends Applicatio
  • Java:什么是“for (;;)”[重复]

    这个问题在这里已经有答案了 有人可以帮我解释一下这条指令吗 为了 我遇到过几种这样的标记 比如在 facebook 的 ajax 代码和 Java 的并发内容中 无限循环 for 循环的三个部分中的每一个部分 for x y z 是可选的
  • 配置 Manuel 容器 IntelliJ Arquillian Wildfly

    我正在使用 intelliJ 运行 junit arquillian 测试 问题是我的测试适用于 maven 命令 但不适用于 arquillian mvn package P arq wildlfy managed 这是我的 pom
  • GWT - 找不到入口点类

    我最近开始开发另一个 GWT 模块 因此 我创建了一个包 其中包含所有新类和一个实现新入口点的特定类 我将 gwt xml 修改为新的入口点 当我编译时 出现以下错误 GWT Compiling client side code WARNI
  • 为什么 Stream 没有 toList() 方法?

    使用 Java 8 流时 获取一个列表 从中创建一个流 执行业务并将其转换回来是很常见的 就像是 Stream of 2 1 2 5 filter n gt n gt 0 map n gt n n collect Collectors to
  • Spring-security - AccessDecisionVoter-impl 不会被调用

    我正在尝试创建自定义 AccessDecisionVoter 并在调用它时将其停止在调试中 我在每个方法中都设置了断点 但没有任何反应 spring security xml
  • Glassfish 使用内部模块库而不是应用程序库

    我正在尝试在 Glassfish 4 1 21 上部署 Spring boot 应用程序 在启动时 我收到一条错误 指出由于方法不存在而无法创建entityManagerFactory 它不存在 因为由于某种原因 当应用程序在 glassf
  • JavaFX 在拖放完成后获取拖放目标文件夹

    Java Oracle 社区的问题 https community oracle com thread 3934986 https community oracle com thread 3934986 问题 我已经设置了下面的代码Butt
  • 使用文件服务 URL 从 blobstore 删除文件

    在我的应用程序 GAE 上的 GWT 中 我们将存储在 blobstore 上的服务 URL 存储在数据库中 当用户选择这些文件之一并单击 删除 时 我们需要从 blobstore 中删除该文件 这是我们的代码 但它根本没有删除文件 pub
  • 隐藏另一个布局的浮动操作按钮

    我有一个FloatingActionButton五月之内activity main xml名为的布局fabBtn 我的应用程序是用ViewPager和三个Fragments 我想隐藏FloatingActionButton当我的第一次Fra
  • Java并发hashMap检索

    ConcurrentHashMap文档说 检索操作 包括 get 通常不会阻塞 因此可能与更新操作 包括 put 和 remove 重叠 检索反映了最近完成的更新操作在其开始时的结果 更正式地说 给定键的更新操作与报告更新值的该键的任何 非
  • 如何在 ADF Oracle 11gR1 中的对话框窗口中的弹出窗口中刷新表

    我正在研究显示一个带有搜索表的弹出窗口的要求 当用户单击弹出窗口中的搜索按钮 提供输入文本框 时 需要使用新的数据集刷新搜索表 我创建了一个populateSearchTable 通过填充数组中的值来生成表的方法deviceListArra
  • 如何在 IE 受信任的根证书颁发机构存储中自动安装自签名证书

    我创建了一个自签名证书 但浏览器告诉我 此 CA 根证书不受信任 要启用信任 请在受信任的根证书颁发机构存储中安装此证书 我通过进入 IE gt Internet 选项 gt 内容 gt 证书 gt 等 我实际上必须导出自签名证书 然后将其
  • 匿名类是内部类的子集吗?

    这听起来可能是一个愚蠢的问题 但所有匿名类都必须在现有类中定义和实例化 因此 它们必须同时是内部类 匿名类是内部类的类型 看http docs oracle com javase tutorial java javaOO innerclas
  • Eclipse 创建 Java 虚拟机失败

    我正在使用 eclipse 开发 android 应用程序 它总是进展顺利 但今天它出现了问题 当我尝试打开 Eclipse 时 它 向我显示此消息 Failed to create the java virtual machine Err
  • 使用 Lucene 提取英语单词词干

    我正在 Java 应用程序中处理一些英文文本 我需要对它们进行词干处理 例如 从文本 amenities amenity 中我需要获取 amenit 该函数如下所示 String stemTerm String term 我找到了 Luce
  • 使用lib添加自定义字体android

    我正在使用 android 自定义字体 lib Calligraphyhttps github com chrisjenx Calligraphy https github com chrisjenx Calligraphy 但对textv
  • 为什么 List.contains() 在 Collections Java 中将 Object 作为参数 [重复]

    这个问题在这里已经有答案了 The java util List contains Object o 方法需要Object作为参数并在内部使用Object equals Object o 如上所述here http docs oracle
  • 使用部署在 Tomcat 中的 Web 应用程序关闭 Tomcat

    我对我的 webapp 开发中遇到的 tomcat 操作有一些疑问 有什么办法可以从部署在tomcat中的web应用程序中关闭tomcat本身吗 tomcat 是否在一个 JVM 或单个 JVM 中运行其所有 webapps war 或者在

随机推荐

  • 在 JavaScript 中将数字转换为字符串,而不从数字中添加尾随零

    我尝试使用 toString 在 JavaScript 中将数字转换为字符串 但它会截断数字中无关紧要的零 举些例子 var n1 250 00 var n2 599 0 var n3 056 0 n1 toString yields 25
  • Laravel 使用 mysql 索引

    我有这个糟糕的代码 抱歉 它使用了太多 MySQL 查询 抱歉它太长了 return view dashboard homepage array DriversNumberApproved gt App Models Drivers whe
  • GWT UiBinder 不加载样式表

    我想使用 UiBinder 制作一个 GWT 小部件 所以我做了 UserPanel ui xml 像这样
  • IF 语句中间的 GO 命令

    我正在寻找有关创建表的信息 仅当它们在当前数据库中不存在时 以便能够在可能或可能没有它们的不同数据库中创建它 并发现这两个有用的主题 SQL Server 检查表是否存在 https stackoverflow com questions
  • 无法在 Debian lenny 上安装 python 模块“pycrypto”

    我尝试通过下载源代码并执行以下命令来安装 pycrypto 模块python setup py install 然后出现错误 running install running build running build py running bu
  • Rails 3 使用 NOT NULL 在 .where 条件之后排序

    我有一个显示最快用户的排名 users User find sort a b b finished at lt gt a created at 现在我必须添加一些代码以防止由于finished at beeing而出现错误nil直到用户完成
  • Android 嵌套片段问题“java.lang.IllegalStateException:活动已被销毁”

    您可能知道 Android 支持嵌套片段 也是通过 API 级别 17 的支持库实现的 所以基本上我正在尝试将嵌套片段添加到 ViewPager 的片段之一中 并熟悉这一新的好功能 在第一次应用程序启动时 一切都按预期工作 即我可以添加子片
  • Oracle ProC INSERT INTO VALUES ( (选择 ...) )

    在 Oracle 10g 上运行 Pro C 我希望在插入语句值子句中执行子查询 该 sql 查询完全有效 并且在 TOAD 中运行没有任何问题 但 Pro C 无法解析该查询 EXEC SQL INSERT INTO TARGET ATT
  • 获取矩阵中总和值最大的列

    比方说 import numpy as np f np matrix 1 2 3 4 5 6 是否可以从矩阵中检索具有最大列和的列数 如何 你可以写 gt gt gt f sum axis 0 argmax 1 所以专栏1求和到最大的值 为
  • 如何将默认的 binutils 转换为 binutils-2.26?

    当我命令 make 时 我收到如下错误 usr bin ld lib liblmi a LMInterface o unrecognized relocation 0x2a in section text 这个错误是由早期版本的 binut
  • 在 Swift 中捕获 [weak self] 的 Realm 通知

    在 Swift 的 Realm 文档中 有关以下内容的部分通知 https realm io docs swift latest notifications有这个示例代码 class ViewController UITableViewCo
  • 如何解决 CMake 错误“无法找到 MPI”

    我正在尝试在 48小时 全新的 ubuntu 20 04 3 安装上运行 CMakeLists txt 文件 我在运行时不断收到以下错误cmake Could NOT find MPI CXX missing MPI CXX WORKS C
  • 带有主机工具链的 buildroot 环境

    为了运行测试用例等 我想为主机系统编译我们的 buildroot 环境的一部分 usr bin gcc 等 我尝试在 usr 中指定 external toolchain 但失败了 有没有人设法做这样的事情 buildroot 手册说这是不
  • 同时在不同层中使用多个 CAKeyframeAnimation

    现在有人知道如何使用 CAKeyframeAnimation 同时对多个图层进行动画处理吗 每个层都有自己的 CAKeyframeAnimation 对象 看看下面的代码 我有一个接收对象 创建 CAKeyframeAnimation 并将
  • 使用 setuptools 从私有 Gitlab 包存储库安装 Python 包

    我为我的雇主创建了一个私人套餐 由于我被禁止将其上传到 PyPI 它是专有的 因此我将其上传到我们私人 Gitlab 中心上的项目的包索引中 我可以手动安装它 pip install my package extra index url h
  • 使页脚正确粘贴到页面底部[重复]

    这个问题在这里已经有答案了 我试图让我的页脚 只是一个带有一行文本的div 位于屏幕底部 如果内容没有一直到达底部 或者位于内容的底部 如果内容需要滚动条 如果内容不需要滚动条 它可以完美工作 但是当内容太长时 页脚仍然位于同一位置 位于内
  • 但很难用 jq 解析 JSON

    我正在慢慢掌握 jq 的工作原理 但距离掌握它还很远 现在我处于一种情况 我已经设法得到了我想要的东西 但没有按照我想要的方式显示它 我确信这很简单 但我错过了 这是我要解析的 JSON 示例 sites site id 123456 st
  • 如何在 JObject 中添加或更新 JProperty 值

    我目前正在使用以下扩展方法来执行此任务 但似乎应该有一些现有的包含方法或扩展来执行此任务 或至少是其中的一个子集 如果里面没有任何东西Json NET那么推荐的流程是什么 或者我如何更改下面的代码以更接近推荐的流程 public stati
  • 如何将嵌入的 YouTube 视频的帧(通过 iframe)写入画布?

    我希望能够从 YouTube 视频中的各个点 不仅仅是缩略图 提取帧 并对它们进行一些处理 我可以使用 iframe API 将视频嵌入到我的网站中 但我正在努力寻找一种将其捕获到画布上的方法 如果我被迫捕获整个屏幕 也可以 如果我必须更改
  • 如何限制匿名子类的创建(Java)

    抱歉 我之前没有正确表述这个问题 我尝试实现工厂模式 一个更好的例子 它是一个带有 create 函数的抽象类 Human 根据创建时传递的参数 它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例 因此 您可以使用以下命令调