2012-04-21 4 views
1

Я всегда создаю различные классы в Android, например, чтобы вызвать разные действия, но теперь я хотел бы создать класс для проверки бит в байте. Я создал простой способ сделать это, так что я могу сделать:Как создать свой собственный класс в Android?

if(bitTest(my_byte,7)){ 
    ... 
} 

испытать бит 7 my_byte, но я хотел бы сделать что-то вроде:

if(my_byte.bitTest(7)){ 
    ... 
} 

Как я могу это сделать ? Потому что я не могу изменить то, что находится внутри класса байтов.

+0

Насколько вы свободны в java? – Sword22

+0

Я не думаю, что вы можете распространять типы примитивов java. –

+0

Это, похоже, не имеет ничего общего с Android. – Nick

ответ

3

Вы можете либо сделать то, что предлагает Sword22, либо написать класс, который инкапсулирует байт без фактического расширения байта. Вы можете также сохранить свои методы для изменения байта.

class Bits { 
    private byte value; 

    public Bits() { this(0x0); } 
    public Bits(byte initial) { value = initial; } 

    public boolean isSet(int bit) { 
    return (value & (1<<bit)) != 0; 
    } 

    public void set(int bit) { /* ... */ } 
    public void unset(int bit) { /* ... */ } 

    public byte toByte() { return value; } 
} 

Также убедитесь, что вы на самом деле нужен примитивный byte, или, если вы могли бы использовать что-то вроде BitSet или даже EnumSet хранить набор флагов.

+0

Хорошая идея, но у меня такая же ошибка в расширении Байт: «Биты типа не могут подклассифицировать последний класс байта»:/Знаете ли вы, почему? Я уже импортировал java.lang.Byte – Andres

+0

Упс, я не хотел, чтобы он расширил байты, ему не нужно ничего расширять. Я отредактировал свой ответ. – Nick

1

Поскольку байт - это конечный класс, вы не можете этого сделать.

Что вы можете сделать (например), чтобы создать новый класс Byte (то есть: Byte2), использовать наследование и реализовать bitTest в Byte2.

Это будет что-то вроде этого:

Public Class Byte2 extends Byte { 
    (...) 
    Public boolean bitTest(int i) { 

    } 
} 

И объявить все "Байт" с с byte2.

EDIT: Просмотреть комментарии.

+0

Я пробовал это раньше, но я получаю сообщение об ошибке. Мой класс: «class myByte extends Byte», и я получаю ошибку «Тип myByte не может подклассифицировать последний класс Byte»:/ – Andres

+0

У меня плохое время, и я не думал. Вы не можете расширить способ написания, но вы можете скопировать реализацию Byte из JDK src, чтобы создать новый класс MyByte. Тот факт, что класс является окончательным, не только предотвращает расширение, но и наследование. – Sword22

+0

Хорошо спасибо :) – Andres

Смежные вопросы