Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多类合成与锅炉板简化_Java_Eclipse Plugin_Multiple Inheritance_Annotations - Fatal编程技术网

Java多类合成与锅炉板简化

Java多类合成与锅炉板简化,java,eclipse-plugin,multiple-inheritance,annotations,Java,Eclipse Plugin,Multiple Inheritance,Annotations,我们都知道为什么Java不应该有多重继承。因此,这不是质疑在奶牛回家之前已经争论过的问题 本文讨论了当我们希望创建一个具有两个或多个其他类特征的类时,我们将做什么 也许,我们大多数人这样做是为了“继承”三个类。为简单起见,我省略了构造函数: class Car extends Vehicle { final public Transport transport; final public Machine machine; } 所以,Car类直接继承Vehicle类的方法和对象,但必须显

我们都知道为什么Java不应该有多重继承。因此,这不是质疑在奶牛回家之前已经争论过的问题

本文讨论了当我们希望创建一个具有两个或多个其他类特征的类时,我们将做什么

也许,我们大多数人这样做是为了“继承”三个类。为简单起见,我省略了构造函数:

class Car
extends Vehicle
{
  final public Transport transport;
  final public Machine machine;
}
所以,Car类直接继承Vehicle类的方法和对象,但必须显式地引用transport和machine以引用transport和machine中实例化的对象

Car car = new Car();
car.drive(); // from Vehicle
car.transport.isAmphibious(); // from Transport
car.machine.getCO2Footprint(); // from Machine
在遇到需要setter和getter方法的框架之前,我一直认为这是一个好主意。例如,XML

<Car amphibious='false' footPrint='1000' model='Fordstatic999'/>
如果只有几个特征,这是可以的。现在,我正在尝试将所有SmartGWT改编成GWT UIBinder,特别是那些不是GWT小部件的类。项目有很多特点

如果存在某种形式的注释框架,不是很好吗

class Car
extends Vehicle
@projects {Transport @projects{Machine @projects Guzzler}}
{
  /* No need to explicitly instantiate Transport, Machine or Guzzler */
  ....
}
如果存在共同的特性名称,则机器的特性优先于车辆的特性,运输的特性优先于机器的特性,车辆的特性优先于运输的特性。然后,注释框架将Transport、Machine和Guzzler实例化为Car的隐藏成员,并进行扩展,以按照@project注释序列指定的优先级,将受保护/公共特征分解为实际的源代码或字节代码。最好转换成字节码。因此,setFootPrint方法可以在机器和Guzzler中找到,只有机器的方法会被投影

问题:

  • 你不认为拥有这样一个框架是个好主意吗
  • 这样一个框架是否已经存在?告诉我在哪里/什么地方
  • 有没有一个eclipse插件可以做到这一点
  • 您知道这样一个注释框架的任何地方是否有建议或计划
  • 如果注释/插件框架允许我指定boolean、int或其他任何需要从字符串转换的内容,并为我进行转换/解析,那也将非常棒

    请给我一些建议。我希望我问题的措辞足够清楚。Thx

    编辑:
    为了避免OO爱好者急于下结论,我将这个问题的标题重新命名。

    也许不完全是您想要的,但您可以看看mixin:

    • CGLIB的

    也许不完全是您想要的,但您可以看看Mixin:

    • CGLIB的
    一些框架(至少Spring)支持为setter和getter指定路径。所以二传手看起来更像

    <property name="transport.amphibious" value="true" />
    
    
    
    您应该看看是否可以使用这些选项。

    一些框架(至少是Spring)支持为setter和getter指定路径。所以二传手看起来更像

    <property name="transport.amphibious" value="true" />
    
    
    

    你应该看看你是否可以利用这些选项。

    如果你在你的环境中有一些自由,一定要看看。它有助于你干净地解决这个问题,并且提供了比继承更好的代码重用策略


    回到JavaLand,您可以使用AspectJ来实现。还有一个非常好的Eclipse插件:。

    如果您在环境中有一些自由,一定要看看。它有助于你干净地解决这个问题,并且提供了比继承更好的代码重用策略


    回到JavaLand,您可以使用AspectJ来实现。还有一个非常好的Eclipse插件:。

    这不是一个真正的问题,而是一个开始讨论的尝试。把这当作一个问题,我的答案是1)不,2)阿福不,3)阿福不,4)阿福不。我不会从一门课延伸到其他课,然后用作文。如果您需要polymorhpism,请创建三个接口并实现其中的三个接口,然后使用Vehicle类使其成为抽象(或非抽象)的Vehicle,并使用composition访问其方法。你为什么选择车辆而不是机器或交通工具来继承?这样,您只能执行以下操作:List=new ArrayList();add(new Car())我认为需要这样一个框架是一个糟糕的类设计。也许你使用的框架你想适应一个错误的方式?尝试使用更多的接口:)我认为OO设计爱好者,包括我自己,在阅读关于多重继承的问题时,通常会得出结论并投票否决。请深入阅读我的问题和博兹霍发布的答案。它是关于合成多个类的特征,而不是表示接口。可能是我的标题写错了,应该省略了令人恼火的“多重继承”,而将问题命名为“类合成bean”。你的问题很有道理。我在野外也遇到过这样的问题,Java并没有很好地解决这些问题。这不是一个真正的问题,而是一种开始讨论的尝试。把这当作一个问题,我的答案是1)不,2)阿福不,3)阿福不,4)阿福不。我不会从一门课延伸到其他课,然后用作文。如果您需要polymorhpism,请创建三个接口并实现其中的三个接口,然后使用Vehicle类使其成为抽象(或非抽象)的Vehicle,并使用composition访问其方法。你为什么选择车辆而不是机器或交通工具来继承?这样,您只能执行以下操作:List=new ArrayList();add(new Car())我认为需要这样一个框架是一个糟糕的类设计。也许你使用的框架你想适应一个错误的方式?尝试使用更多的界面:)我认为OO设计爱好者,包括我自己,在阅读关于多个继承的问题时通常会得出结论