gpt4 book ai didi

java - 循环泛型代码设计

转载 作者:行者123 更新时间:2023-11-29 05:17:05 25 4
gpt4 key购买 nike

尝试说抽象:我尝试为组件和定向连接器网络设计一个通用模式。所有组件都通过连接器连接。因此,不失一般性,想象一个由组件和连接器组成的链(非常简单的网络),我们有这样的东西:CompA -> ConnectorAB -> CompB -> ConnectorBC -> CompC ...等等

由于连接器应该是具有某些属性和功能的实际对象,我不能只实现类似组件双链列表的东西。

组件将其输入和输出连接器保存在列表中,连接器保存其源组件和目标组件。我给你举一个我的例子:

interface Component<In extends Connector, Out extends Connector> { List<In> getIns();...}

interface Connector<S extends Component, T extends Component> { S getSource();...}

interface CompA<In extends Connector<?, CompA>, Out extends Connector<CompA, ?>> extends Component<In, Out> {}

interface CompB<In extends Connector<?, CompB>, Out extends Connector<CompB, ?>> extends Component<In, Out> {}

interface A_A extends Connector<CompA, CompA> {}

interface A_B extends Connector<CompA, CompB> {}

问题:

  • i.) Cyclomatic generic depedencies:我可以无限嵌套泛型(Component<Connector<Component.......>>>),而不是我使用原始类型,这很好,但它看起来很乱。
  • >ii.) 我想用 CompA<In extends Connector<?, CompA>, Out extends Connector<CompA, ?>> 表达什么是,我的 CompA 知道它连接到一个针对 CompA 的连接器。显然,这不是我在句法上所做的。
  • >三) A_A aa;
    aa.getSource(); //gives me a CompA, thats great.
    aa.getSource().getIns(); //gives me a List of raw Connectors, but i would like to have a list of partially defined connectors, they know they are referencing a compA
    aa.getSource().getIns().get(0).getTarget() // should give me a compA
    按原样编写我的代码,很明显这不能像我想要的那样工作,但是我认为 'aa.getSource().getIns();' 可以工作,因为 In-Type 至少是一个连接器,对吗?
  • 我正在寻求实现此模式的建议(也就是说,更正我的代码!)。它必须在 java 中,但我不必只使用 java-generics。如果您可以使用非 Java 泛型模式来完成此抽象模式,则可能没问题(基于其他 Java 语言功能或 OO 模式的模式)。

    我想我错过了很多信息,所以如果有不清楚的地方请询问。

    最佳答案

    我认为以下内容最适合您的要求。您可能仍然会遇到几个差异和/或删除问题。如果你这样做,我会建议你完全放弃泛型,而不是求助于原始类型。

    interface Component<SELF extends Component<SELF>> { Set<Connector<?, SELF>> getIns();...}

    interface Connector<SOURCE extends Component<SOURCE>, DESTINATION extends Component<DESTINATION>> { SOURCE getSource();...}

    interface CompA extends Component<CompA> {}

    interface CompB extends Component<CompB> {}

    interface A_A extends Connector<CompA, CompA> {}

    interface A_B extends Connector<CompA, CompB> {}

    关于java - 循环泛型代码设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158041/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com