Как работает метод HasFlag в C#, и можно ли его заменить методом equals() в java?

148
23 августа 2019, 21:30
public enum AccountInfoUpdateType
{
    None = 0,
    AccountInfo = 1,
    RiskInfo = 2,
    TradingStatistic = 4,
    All = TradingStatistic | RiskInfo | AccountInfo,
}

public class CryptoAccountInfoUpdate : ClientData
{
    public AccountInfoUpdateType AccountInfoUpdateType { get; set; }

    public CryptoAccountInfoUpdate(AccountInfoUpdateType accountInfoUpdateType) 
    {
      if (accountInfoUpdateType.HasFlag((Enum) AccountInfoUpdateType.TradingStatistic))
      {
    //some code
      }
    }

Я только учусь, поэтому вопрос может и глупый. Не судите строго.

Answer 1

В яве нет конструкции аналогичной enum из C#.

Для получения той же функциональности придется использовать int константы и немного битовой магии.

Например есть

 int None = 0;
 int AccountInfo = 1;
 int RiskInfo = 2;
 int TradingStatistic = 4;

узнать выставлен ли флаг в foo можно так

if(foo & AccountInfo != 0) {
    // флаг выставлен
} else {
    // флаг не выставлен
} 

выставить флаг можно так

foo |= AccountInfo;

сбросить

foo &= ~AccountInfo;
READ ALSO
Получение списка файлов в JSON

Получение списка файлов в JSON

На хостинге есть папка, в которой есть другие папки с аудиоНужно в json файле получить список файлов в таком виде:

127
Как обновить access token и загрузить видео на youtube?

Как обновить access token и загрузить видео на youtube?

Как обновить маркер доступа (с помощью маркера обновления) и загрузить видео на youtube?

127