Удалить все неточечные / цифры:
var currency = "-$4,400.50";
var number = Number(currency.replace(/[^0-9.-]+/g,""));
Вы можете отобразить свой дискриминатор как свойство, доступное только для чтения:
public class ApplicationProcess {
...
@Column(name = "apType", insertable = false, updatable = false)
private String apType;
}
Я могу представить несколько случаев, когда это может быть полезно, но, несмотря на причину, по которой вам это нужно, вы можете создать в своем методе абстрактного класса, например
@Transient
public String getDiscriminatorValue(){
DiscriminatorValue val = this.getClass().getAnnotation( DiscriminatorValue.class );
return val == null ? null : val.value();
}
Вы можете использовать аннотацию формул. Если вы используете Hibernate, вы можете использовать приведенный ниже код в соответствии с этой ссылкой :
private String theApType;
@Formula("apType")
String getTheApType() {
return theApType;
}
Конечно, вы сможете использовать его в своих запросах.
Я только что наткнулся на этот вопрос и должен был опубликовать ответ. ИМО, это очевидный случай использования API отражения Java
DiscriminatorValue annotation = ApplicationProcess.class.getAnnotation(DiscriminatorValue.class);
annotation.getValue().equals("AP");
Мы вызываем метод, который принимает ApplicationProcess в качестве параметра, и я не хочу использовать instanceof для проверки его типа. Было бы круче, если бы я мог сделать что-нибудь вроде (...)
Я не думаю, что это было бы круче, это кажется хуже, чем позвонить мне instanceOf
: если по какой-либо причине вы измените дискриминатор значение, это нарушит ваш код.
Если вам нужно проверить тип, используйте instanceOf
. Уловка с использованием дискриминатора не улучшит ситуацию, она просто сделает ваш код менее надежным.