У меня есть класс с кодом, подобным следующему, где я хочу, чтобы было тривиально использовать любой класс / тип, который представляет число.Я обнаружил, что определяю большое количество методов, таких как следующие:
public class Range {
private BigDecimal inferior = new BigDecimal(0);
private BigDecimal superior = new BigDecimal(1);
public Range(BigDecimal inferior, BigDecimal superior) {
if (inferior.compareTo(superior) == -1) {
this.inferior = inferior;
this.superior = superior;
}
}
public Range(int inferior, int superior) {
this(new BigDecimal(inferior), new BigDecimal(superior));
}
public Range(Integer inferior, Integer superior) {
this(new BigDecimal(inferior), new BigDecimal(superior));
}
public Range(float inferior, float superior) {
this(new BigDecimal(inferior), new BigDecimal(superior));
}
public Range(double inferior, double superior) {
this(new BigDecimal(inferior), new BigDecimal(superior));
}
}
Я даже не написал каждую возможную комбинацию!Например, тот, который принимает float и double, или int и BigDecimal.
Как этого можно достичь чистым способом, чтобы были параметры, допустимые для нескольких классов / типов данных, которые ужепредопределенные или даже примитивы?Я рассмотрел адаптеры и прокси-серверы, но я регулярно не понимаю объяснения и не могу понять, соответствуют ли они моему варианту использования, и если да, то как - на этот вопрос уже можно было ответить на SO, но если так, то хотя быЯ хотел бы узнать, может ли кто-нибудь объяснить мне это в соответствии с этим конкретным примером.