2

Stringキーが で、値が の派生物である IMAP がありますArrayListEntryProcessorこのマップのキーで実行する必要があります。また、インターフェイスEmployeeを実装する POJO であることに注意してください。Serializable

以下のコードを実行すると、コードは「Why so !」と出力します。そして、以下の方法ではキャストできないとClassCastException述べたものを手に入れました。java.util.ArrayListEmployeesprocess()ListValueEntryProcessor

Q1. オブジェクトとしてではなくオブジェクトEmployeesとしてシリアル化できるように、自分の型 ( ) にカスタム シリアライザーを追加する必要があることを知りました。アイテムもマークされているのような組み込み型に「カスタムシリアライザー」を追加することが必須である理由を知りたいですか?EmployeesArrayListArrayListSerializable

public class Employees extends ArrayList implements Serializable
{

    private static final long serialVersionUID = 1L;

   /**
   Constructs a new employees object
   */
   public Employees()
   {
      super();
   }
}

HazelcastInstance hazelcastInstance = HazelcastHelper.getHazelcastInstance();
IMap<String, Employees> empMap = hazelcastInstance.getMap("employeesMap");

Employees empList = new Employees();
Employee employee = new Employee();
empList.add(employee);
empMap.put("companyId", employees);
empMap.executeOnKey("companyId", new IncSalaryEntryProcessor()); 

public static class ListValueEntryProcessor extends AbstractEntryProcessor<String, Employees>
{

    private static final long serialVersionUID = 1L;

    @Override
    public Object process(Entry<String, Employees> arg0) 
    {
        if(! (arg0.getValue() instanceof Employees))
        {
            System.out.println("Why so !");
        }
        // ClassCastException thrown here.
        Employees empList = arg0.getValue();
        return true;
    }

}
4

1 に答える 1