你能用Java实例化一个接口吗[重复]

2023-11-21

你能用Java实例化一个接口吗?我知道快速回答是“不”。但有件事我不太理解。

这里发生了什么?

共享首选项是一个公共接口。然而,我们并不像我在书中读到的那样使用这个接口,我们不创建一个类并实现 SharedPreferences。相反,我们像这样使用这个 API:

SharedPreferences pref = Context.getSharedPreferences("some value", 0);

那么这段代码到底发生了什么?

我认为它就像获取共享首选项()正在创建一个SharedPreferences我们可以使用和操作的对象。

But SharedPreferences是一个接口...我被告知你必须实现接口而不是创建它们的对象。这在Java中是什么?

当我查看 Java API 时,我看到一个定义为公共接口的类。我如何知道何时实现该接口或何时从中创建此类对象?


你永远无法在java中实例化接口。但是,您可以通过接口的类型来引用实现接口的对象。

所以发生的事情是getSharedPreferences返回一个实现该接口的对象。返回对象的类型并不重要。重要的是它实现了该接口的所有方法,因此它可以用作SharedPreferences

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

你能用Java实例化一个接口吗[重复] 的相关文章

  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • ElasticBeanstalk Java,Spring 活动配置文件

    我正在尝试通过 AWS ElasticBeanstalk 启动 spring boot jar 一切正常 配置文件为 默认 有谁知道如何为 java ElasticBeanstalk 应用程序 不是 tomcat 设置活动配置文件 spri
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • Springs 元素“beans”不能具有字符 [children],因为该类型的内容类型是仅元素

    我在 stackoverflow 中搜索了一些页面来解决这个问题 确实遵循了一些正确的答案 但不起作用 我是春天的新人 对不起 这是我的调度程序 servlet
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • Unity应用程序块,如何将参数传递给注入工厂?

    这是我现在拥有的 Container RegisterType
  • 何时在 C++ 中使用 void*

    我正在努力思考一个问题void 我应该了解什么是正确的使用方式以及是否存在任何潜在的滥用行为 意思是很酷的东西 没有错 我不明白如何以及为什么使用void 如果我理解的话 我需要将当前指针转换为void 然后当我想使用它时又投射回原来的 为
  • 在大文件中查找和替换

    我想在一个大的 xml 文件中找到一段文本 并想用其他文本替换 文件大小约为 50GB 我想在命令行中执行此操作 我正在查看 PowerShell 想知道它是否可以处理大尺寸 目前我正在尝试这样的事情 但它不喜欢它 Get Content
  • Libgdx |场景2d |设置表格的背景颜色?

    我正在创建一个菜单 就像 flappybird 中的菜单一样 当你死时它会在播放屏幕上弹出 我创建了一个扩展表格的类 我想将表格的背景设置为白色 有没有办法做到这一点 你可以这样做 Pixmap bgPixmap new Pixmap 1
  • 如何使用javascript删除CSS属性?

    是否可以使用 JavaScript 删除元素的 CSS 属性 例如我有div style zoom 1 2 现在我想通过 JavaScript 删除缩放属性 您有两个选择 选项1 您可以使用移除属性方法 它将从元素中删除样式 el styl
  • Haskell:获取表达式的静态类型

    我正在寻找一个可以完成 GHCi type 命令的功能的函数 理想情况下 它会有一个类似的签名 getStaticType a gt String a getStaticType 1 2 a Num t gt t b getStaticTy
  • 子句之间的多个 MySql WHERE

    MySql 新手程序员感谢您的耐心等待 我试图跟踪满足 3 个不同条件的表中的 ID 号 这就是我所得到的 但是查询不会返回表中明确匹配的任何结果 想法 SELECT FROM table WHERE x BETWEEN 80 AND 20
  • 仅底角或顶角为圆角的 ImageView

    我对这个问题有答案 但我花了太多时间寻找它 这就是我创建这个问题的原因 这样对其他人来说会更容易 您不能像通常的视图一样使用形状 drawable 来圆化图像角 这就是为什么您需要对代码内的图像进行一些更改 这是使用材料设计来做到这一点的另
  • 使用 nbconvert 从 Jupyter Notebook 中删除单元格

    中提到的建议如何在 IPython Notebook 中隐藏一个特定单元格 输入或输出 不工作 在 Windows 上我执行以下操作 jupyter nbconvert a ipynb TagRemovePreprocessor remov
  • Android VideoView - 如何按顺序播放视频

    我正在尝试开发一款 Android 应用程序 可以在一个视频视图中播放多个视频 当一个完成后 第二个必须开始 依此类推 我的视频存储在项目的 raw 文件夹中 为了获取他们的文件名 我这样做 Field fields R raw class
  • 当 VS 解决方案中的目标失败时,如何使 msbuild 失败?

    我在命令行上使用 msbuild 来构建包含 C 项目的 VS2012 解决方案 该项目有一个在构建后运行的目标
  • 如何使用终端调用jar文件中的方法?

    我在 jar 文件中有一个已编译的项目 我需要从中调用一个方法 如何在 ubuntu 终端中执行此操作 您不能从任何类的终端或 cmd 调用任何方法 您可以通过终端执行课程 If your jar是可执行的尝试 java jar Name
  • Android ContentProvider读写权限

    权限似乎没有任何区别 在清单中 我只有一个
  • Field...Room 持久性库的 getter 不明确

    我有以下实体 public class User PrimaryKey private final long id private String id private String userName private String email
  • Symfony2 - 在实体构造函数中设置默认值

    我可以设置一个简单的默认值 例如字符串或布尔值 但我找不到如何设置实体的默认值 在我的 User php 实体中 ORM ManyToOne targetEntity Acme DemoBundle Entity Foo protected
  • C# 为什么 sizeof 不安全以及如何以安全的方式获取结构体的大小?

    我定义了一个通过套接字发送的结构 我想知道它的大小 但是sizeof是不安全的 对于 System Runtime InteropServices MarshalSizeOf 有没有办法以安全的方式获取它的大小 对于托管结构没有办法做到这一
  • Selenium 和 SSL 证书中的 Chromedriver

    我正在使用 Selenium 来测试一个具有 HTTP Auth 甚至 SSL 证书的网站 作为 HTTP 基本身份验证的解决方法 我正在使用 ChromeDriver http code google com p selenium wik
  • 在 Mongodb 中使用 .aggregate 的 findOne 相当于什么?

    基本上 我设法从集合中返回所有对象 例如 如何返回单个元素 风格findOne id 5e82d378527bb420a4001aaf 我知道如何使用 match 但这会返回各种结果 let id 5e82d378527bb420a4001
  • 向基类添加默认构造函数会更改派生类型的 sizeof() [重复]

    这个问题在这里已经有答案了 我倾向于认为我对 C 内部结构和内存布局有很好的掌握 但这让我感到困惑 我有以下测试代码 include
  • 你能用Java实例化一个接口吗[重复]

    这个问题在这里已经有答案了 你能用Java实例化一个接口吗 我知道快速回答是 不 但有件事我不太理解 这里发生了什么 共享首选项是一个公共接口 然而 我们并不像我在书中读到的那样使用这个接口 我们不创建一个类并实现 SharedPrefer