开源项目

知识点

相关文章

更多

最近更新

更多

Disruptor实现EventFactory接口创建实例对象

2019-05-20 00:08|来源: 网路

创建具体实体类

package com656463.quickstart;

public class OrderEvent {

   /**
    * 订单的价格
    */
   private long value;

   public long getValue() {
      return value;
   }

   public void setValue(long value) {
      this.value = value;
   }
   
}


实现 EventFactory 工厂类接口,重写newInstance方法,在此方法中创建对象

package com656463.quickstart;

import com.lmax.disruptor.EventFactory;

/**
 * 创建EventFactory工厂类,用于创建实例对象
 */
public class OrderEventFactory implements EventFactory<OrderEvent> {

    /**
     * 返回空的数据对象(Event)
     *
     * @return
     */
    @Override
    public OrderEvent newInstance() {
        return new OrderEvent();
    }

}


此时创建对象的逻辑就完成了,接下来看怎么使用。

相关问答

更多
  • 听起来你需要一个抽象的工厂。 除了IFoo ,使用CreateFoo方法创建一个接口IFooFactory 。 给Jim一个实现IFooFactory的对象的实例,Jim会调用CreateFoo方法。 创建实现IFooFactory的对象的实例可能是Sally或Pat的工作。 Sounds like you need an abstract factory. In addition to IFoo, create an interface IFooFactory with the CreateFoo met ...
  • 你的类型不匹配。 SpawnableCollectible实现了ISpawnable而不是ISpawnable因此转换失败并且操作符返回null 。 Your types do not match. SpawnableCollectible implements ISpawnable not ISpawnable so the cas ...
  • 从javadoc for InstantiationException 当应用程序尝试使用类Class中的newInstance方法创建类的实例时抛出,但无法实例化指定的类对象。 实例化可能由于各种原因而失败,包括但不限于: class对象表示一个抽象类,一个接口,一个数组类,一个基本类型或 void该类没有nullary构造函数 您需要检查类,以查看是否可以从没有参数的公共构造函数创建实例。 From the javadoc for InstantiationException Thrown when a ...
  • 您无法在.NET中创建接口的匿名实现。 你必须有一个具体的实现,但你可以隐藏它,轻松地提供相同类型的匿名化。 我已经.NET-ified你的命名约定,但它在这里是: Public Interface IMessageHandler(Of T) Sub Handle(message As T) End Interface Public NotInheritable Class MessageHandler Private Sub New() End Sub Private C ...
  • 接口没有构造函数,不能自己创建。 将对象分配给变量(包括接口类型的变量)不会创建新对象,它只是对同一对象的另一个引用。 class DerivedWithInterface: Base, IEnumerable {} 现在,您可以创建DerivedWithInterface类的实例并将其分配给任何基类/接口的变量,但只有new将创建一个对象: DerivedWithInterface item = new DerivedWithInterface(); IEnumerable asEnumerabl ...
  • 我会给出这个问题的典型答案:首先测试,并根据您的结果做出决定。 虽然您谈论效率,但您并不特别说性能是一项基本要求。 如果您对性能要求有了一些了解,可以使用队列和Disruptor的基本实现来模拟一个简单的原型,并测量两者的性能。 如果其中一个比另一个好得多,那就是你的答案。 但是,如果实施起来更加费力,特别是如果它不能提供您需要的效率,或者您没有任何硬性能要求,那么这表明解决方案不是正确的解决方案。 先测量一下,然后根据你的结果来决定。 I'll give our typical answer to thi ...
  • 这样做效果更好。 我不需要创建接口的新实例。 public object Invoke(object instance, object[] inputs, out object[] outputs) { outputs = new object[0]; Type interfaceType = typeof(IESFPingable); Type T = instance.GetType(); FieldInfo[] fiel ...
  • servlet容器有一个实现此接口的类,并实例化该类的对象。 就像你做的那样 List list = new ArrayList(); List是一个接口,您实例化ArrayList ,它是一个实现List的类。 servlet容器执行以下操作: HttpServletRequest request = new TomcatHttpServletRequestImpl(); 这是OO和多态性的基础。 The servlet container has a class im ...
  • 是的。 它是一个实现接口的Anonymous类 。 之后的onclick是onclick的实现。 尝试这样做: View.OnClickListener listener=new View.OnClickListener() { public void onClick(View v) { //... } }; btn.setOnClickListener(listener); 这可能看起来更清楚。 Yes, it is. It is a Anonymous class that imple ...
  • 需要我在InterfaceBase复制虚拟int声明吗? 如果我删除它们,我将无法在转换为InterfaceBase *后调用InterfaceB方法。 我能够调用InterfaceA方法但是对于InterfaceB我必须在InterfaceBase放置虚拟int声明。 这是因为您私下从InterfaceB继承而不是公开继承。 将您的代码更改为 class InterfaceBase : public InterfaceA, public InterfaceB { /* Your implement ...