Java 泛型值。

2024-04-24

我进行了一次面试测试,看到了以下代码:

EDIT:

public class TestValue {
    private Value<SomeValue> defaultValue;

    @Test
    public void Empty_Value_Has_No_Value() {
        Assert.assertFalse(Value.<SomeValue> createEmptyValue()
            .hasValue());
    }

    @Test
    public void Default_Value_IsEmpty() {
        Assert.assertEquals(Value.<SomeValue> createEmptyValue(),
            defaultValue);
    }

    @Test
    public void Non_Empty_Value_Has_Value() {
        Assert.assertTrue(new Value<SomeValue>(true, new SomeValue())
            .hasValue());
    }
}

我从来没有见过像这样的 Java 泛型

Value.<SomeValue>

该测试是使用上面给定的单元测试代码来实现 Value 类。

我试图找出下面的 Value 方法签名(需要实现):

public interface Value<T> {

    public boolean hasValue();
    public Value<T> createEmptyValue();
}

有哪位知道的请帮帮忙吗?

谢谢

编辑:根据下面的答案应该是这样的@marlon

public class Value<T> {

    public boolean hasValue(){}
    public static <M> Value<M> createEmptyValue(){}; //need <M>
}

需要了解的关键语法:

Value.<SomeValue>  //ClassName.<Type>method

是使用参数化参数调用类的静态方法的方法。

编辑:根据@snipes83,使用参数化参数调用类的非静态方法的语法。

SomeObject.<Type>method

Value.<SomeValue>这是泛型代表方法的方式。

使用谷歌番石榴Optional举个例子:

Optional<String> email = Optional.<String>of(strEmail);

See 泛型类型 - 调用泛型方法 http://www.onjava.com/pub/a/onjava/excerpt/javaian5_chap04/index1.html

由于接口不能声明静态方法(对你的java感到羞耻),只需将你的方法声明为静态并忘记接口,如下所示:

class Value<T> {

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

Java 泛型值。 的相关文章

随机推荐

  • 从网站获取数据的vba代码

    我是这个网站和 VBA 编程的新手 我遇到了一个问题 我必须从中获取数据这一页 http www kieskeurig nl zoeken index html q 4960999543345 我需要有超链接网址Check Rates 10
  • 将三个列表合并到一个字典中

    我需要将三个列表合并到一本字典中 这些列表来自读取我格式化的 txt 文件 以下是该文件的片段 maker Horsey Ford Overland Scripps Booth year 1899 1909 1911 1913 model
  • 使用 .htaccess 在 HTTP 和 HTTPS 之间正确切换

    我们有一个购物网站 托管在共享主机 Mediatemple Gridserver 上 网站的某些部分需要使用 HTTPS 结帐等 但其余部分应使用 HTTP 有谁知道我们如何始终强制对特定 URL 正确使用 HTTP HTTPS 我们已经让
  • SQL 查询返回与同一表的另一列中的精确值匹配的单个值

    Table Dummy Colum1 Colum2 219 217 219 218 228 218 228 225 229 218 229 220 我需要结果集 其中如果用户在 where 子句中提供的数字应该与其计数示例完全匹配 如果用户
  • 使用主干渲染引导模式

    我认为代码可以更好地解释我的问题 风景 App Views ErrorModal Backbone View extend template window template errorModal render function this e
  • Knockout.js、映射插件和 moment.js - 格式化/映射 json 日期

    我将 Knockout js 与映射插件一起使用 我正在获取一些 json 数据并使用映射插件将其映射到我的 html 中 json 数据中是 json 格式的日期 我需要使用映射插件将其映射到 html 中 是否可以使用 moment j
  • iOS - 异步图像下载

    我正在编写一个应用程序 它将在 UIImageView 中显示在我的服务器上找到的图像 我需要一些能够异步下载图像并缓存它的东西 同时将其放入 UIImageView 中 当我按下按钮时 下载也需要能够取消 谁能指出我可以做到这一点的方向吗
  • 为什么 JVM 同时具有“invokespecial”和“invokestatic”操作码?

    两条指令都使用静态而不是动态调度 似乎唯一的实质性区别是invokespecial始终将一个对象作为其第一个参数 该对象是分派方法所属类的实例 然而 invokespecial实际上并没有把物体放在那里 编译器负责通过在发出之前发出适当的堆
  • 视图“~/Views/Login/Login.aspx”必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl

    因此 我在 ASP NET mvc2 解决方案上遇到此错误 该解决方案曾经工作正常 我必须安装 Visual Studio 2012 但磁盘空间不足 因此必须手动卸载一些 Visual Studio 2010 功能 但目前看来并非完全必要
  • 嵌套的可分割对象不读取

    我正在尝试打包一个包含一些 string int 变量和一个对象变量的对象 字符串和整数可以工作 但嵌套对象不行 我知道我也必须将其打包 但我显然做错了 在我的嵌套类中 writeToParcel方法被调用 我检查Log d 调用 但是cr
  • Javascript:如何实现异步函数队列(无需库)

    我一直在搜索谷歌和SO 但由于某种原因我很难解决这个问题 只是强调一下 我不想加载像 JQuery 这样的库 因为我不需要它的大部分内容 当我could使用动画库 我已经构建了我自己需要的几个函数 其中一些甚至不是您在库中找到的标准动画 所
  • 用于 SQL 更新语句的 Java 单工作线程

    我正在开发一个基于 Java 的服务器 其中有多个线程 每个连接的用户一个线程 一些额外的线程 会涉及到一些数据库连接 所以我在想服务器每次创建一个SELECT查询数据库时 它将为此启动一个新线程 以防止当前线程阻塞 我计划为此使用连接池
  • 当我尝试打开我的网络应用程序(在本地主机上运行)时,Heroku 给出了 503

    我正在尝试部署到heroku 但即使它在本地主机上运行 也会得到503 我很好奇我的服务器是否设置正确 因为我是编程新手 我希望任何人都可以为我指出正确的方向 即在哪里查找或提供建议 因为我在谷歌上花费了无数个小时 跨越了几周的时间 我的主
  • 如何在C中访问正确的全局变量?

    假设我在 main c 中有一些全局变量 GLOBAL 但我的 main c 有一个 include other h 但 other h 也有全局变量 GLOBAL 当我在 main c 中写 GLOBAL 时 如何让编译器知道我的意思是哪
  • 附加不同 Promise 链时 JavaScript Promise 的执行顺序

    我想检查一下promise对象通过创建一个promise并传递给其他人并让其他人附上then到它 输出与我的预期相去甚远 我不明白它是如何执行的 const wait time gt return new Promise res rej g
  • 如何禁用 jQuery 日期选择器中的月份选择?

    我正在尝试禁用允许用户更改月份的左 右按钮 我已经删除了月份的下拉列表 但无法删除按钮 date datepicker changeMonth false changeYear false dateFormat dd mm yy durat
  • 适合所有人的 vsixmanifest:VS 2010、2012 和 2013

    我在 VS2013 下使用 VSIX 清单设计器 我已经添加微软VisualStudio专业版产品标识符和 10 0 13 0 安装目标的版本范围 尽管如此 我仍然没有将 VS2010 Professional 视为可用的安装目标 sour
  • 如何正确阅读EcmaScript规范

    我对 JavaScript 二进制逻辑运算的 它是如何工作的 知识感兴趣 但我陷入了步骤解释 这就是规格的描述 12 13 3 https www ecma international org ecma 262 8 0 index html
  • 使用 Dask 处理大型压缩 csv 文件

    设置是我有八个大的 csv 文件 每个 32GB 每个文件都用 Zip 压缩为 8GB 文件 我无法使用未压缩的数据 因为我想节省磁盘空间 但没有剩余 32 8GB 空间 我无法加载一个文件 例如pandas因为它不适合内存 我认为 Das
  • Java 泛型值。

    我进行了一次面试测试 看到了以下代码 EDIT public class TestValue private Value