Класс Интервал представляет интервал времени от одного миллисекундного до другого момента (вместе с часовым поясом). DateMidnight такое мгновение. Итак, предложенная вами реализация интервала для DateMidnights уже готова.
Interval i = new Interval(
new DateMidnight(2010, 3, 2), new DateMidnight(2010, 3, 5));
i.contains(new DateTime(2010, 3, 1, 23, 59, 59, 999)); // == false
i.contains(new DateTime(2010, 3, 2, 0, 0, 0, 0)); // == true
i.contains(new DateTime(2010, 3, 4, 23, 59, 59, 999)); // == true
i.contains(new DateTime(2010, 3, 5, 0, 0, 0, 0)); // == false
Однако концепция вашего интервала поиска для LocalDates aka a Partial (без часовых поясов) еще не существует. Если вы собираетесь реализовать это для себя, вообще не реализуйте никаких интервальных интерфейсов. Это будет мешать вашим желаниям, потому что, как уже говорилось, основано на мгновениях.