Forma recomendada para restringir a entrada no campo de texto JavaFX

Pode parecer que a questão é a duplicata deisto. Mas a minha pergunta é que eu desenvolvi um campo de texto inteiro no JavaFX de duas maneiras. O código é dado abaixo

public class FXNDigitsField extends TextField
{
private long m_digit;
public FXNDigitsField()
{
    super();
}
public FXNDigitsField(long number)
{
    super();
    this.m_digit = number;
    onInitialization();
}

private void onInitialization()
{
    setText(Long.toString(this.m_digit));
}

@Override
public void replaceText(int startIndex, int endIndex, String text)
{
    if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
        super.replaceText(startIndex, endIndex, text);
    }
}

@Override
public void replaceSelection(String text)
{
    if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
        super.replaceSelection(text);
    }
}
}

E a segunda maneira é adicionar um filtro de evento.

O trecho de código é dado.

 // restrict key input to numerals.
this.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() {
  @Override public void handle(KeyEvent keyEvent) {
    if (!"0123456789".contains(keyEvent.getCharacter())) {
      keyEvent.consume();
    }
  }
});

Minha pergunta é qual é a maneira difamada de fazer isso? Alguém pode me ajudar a pegar o certo?

questionAnswers(4)

yourAnswerToTheQuestion