String
キーが で、値が の派生物である IMAP がありますArrayList
。EntryProcessor
このマップのキーで実行する必要があります。また、インターフェイスEmployee
を実装する POJO であることに注意してください。Serializable
以下のコードを実行すると、コードは「Why so !」と出力します。そして、以下の方法ではキャストできないとClassCastException
述べたものを手に入れました。java.util.ArrayList
Employees
process()
ListValueEntryProcessor
Q1. オブジェクトとしてではなくオブジェクトEmployees
としてシリアル化できるように、自分の型 ( ) にカスタム シリアライザーを追加する必要があることを知りました。アイテムもマークされているのような組み込み型に「カスタムシリアライザー」を追加することが必須である理由を知りたいですか?Employees
ArrayList
ArrayList
Serializable
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;
}
}