当前位置: 首页 > 面试题库 >

通用OR而非AND

申屠宏胜
2023-03-14
问题内容

是否可以通用地参数化接受EITHER ClassA或InterfaceB的方法?

由于|无法编译 伪码

public <T extends Number | CharSequence> void orDoer(T someData){ // ... }

即我不想编写多个方法签名,而是希望此方法接受Number或CharSequence作为参数

应该通过数字或CharSequence参数传递

orDoer(new Integer(6));
int somePrimitive = 4;
orDoer(somePrimitive);
orDoer("a string of chars");

问题答案:

如果您 确实 想这样做,则需要将您接受的类包装在自己的自定义类中。在您的示例情况下,可能类似于:

public class OrDoerElement {
    private final Number numberValue;
    private final CharSequence charSequenceValue;

    private OrDoerElement(Number number, CharSequence charSequence) {
        this.numberValue = number;
        this.charSequenceValue = charSequence;
    }

    public static OrDoerElement fromCharSequence(CharSequence value) {
        return new OrDoerElement(null, value);
    }

    public static OrDoerElement fromNumber(Number value) {
        return new OrDoerElement(value, null);
    }
}

您的orDoer方法变为:

public void orDoer(OrDoerElement someData) { .... }

然后,您可以构建其中之一,并使用以下任一方法在您的方法中使用:

orDoer(OrDoerElement.fromCharSequence("a string of chars"));
orDoer(OrDoerElement.fromNumber(new Integer(6)));

但老实说,这听起来有点复杂,而且工作量太大,以至于无法调用具有不同参数类型的方法。您确定使用两种方法无法获得相同的效果,而对于通用逻辑而言,使用第三种方法不能实现相同的目的?



 类似资料:
  • 问题内容: 我正在尝试学习python,并遇到了一些不错的代码,虽然简短但并不完全有意义 上下文是: 我知道它在做什么,但是python为什么要这样做-即返回值而不是True / False? 返回5。类似,将和更改为或将导致功能更改。所以 将返回10。 这是合法/可靠的样式,还是对此有任何误解? 问题答案: TL; DR 我们首先总结两个逻辑运算符and和的两个行为or。这些习语将构成我们下面讨

  • 问题内容: 我在网站上列出了商品。每个项目都有几个附加的类别,我们称这些类别为电影流派。在高级搜索中,我让人们选中他们喜欢的类型的复选框,它弹出与所选任何类型匹配的电影列表。 我有这样的查询: 这里的问题是,如果您选择“动画”和“恐怖”,则会得到一堆迪斯尼卡通(“动画”)和SAW系列(“恐怖”)。 我想将搜索范围包括在内,因此它只会返回与所有选定流派都匹配的结果,因此将同时标记为“动画”和“恐怖”

  • 本文向大家介绍求结果(and or or)相关面试题,主要包含被问及求结果(and or or)时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我的ActiveRecord模型中有以下查询方法: 因此,这将查找所有具有从逗号分隔的列表中获取的标签并转换为数组的标签的记录。 目前,这会匹配带有ANY匹配标签的记录-如何使其在匹配所有标签的地方工作。 IE:如果当前如果我输入:“ blue,red”,那么我将获得所有标记为blue或red的记录。 我想匹配所有标有蓝色和红色的记录。 有什么建议吗? - 编辑 - 我的模型是这样的:

  • 问题内容: 在MySQL中创建非NULL约束以使fieldA和fieldB不能都为NULL的最佳方法是什么。我不在乎任何一个本身是否为NULL,只要另一个字段具有非NULL值即可。而且,如果它们都具有非NULL值,那就更好了。 问题答案: MySQL 5.5引入了SIGNAL,因此我们不再需要Bill Karwin的答案中的额外列。Bill指出您还需要一个更新触发器,因此我也将其包括在内。

  • 问题内容: 我有2个Java类和,它们都存在于数据库中。 人: 关系: 每个人都有(或没有)关系列表,当关系的child_id或parent_id等于该人的id时,应将关系添加到列表中。 TL; DR:当=>将关系添加到与人的关系列表中时 我面临的问题是该注释: 创建以下SQL(只是必要的部分): Java Hibernate中正确的注释是什么,以生成一条用 OR* 代替 AND 的SQL语句 *