2013-03-19 5 views
0

В C Я хотел бы создать структуру данных, как показано ниже:Структурированные данные в Java

struct file_data_format 
{ 
    char name[8][20]; 
    float amp[8]; 
    int filter[8]; 
}; 

extern struct file_data_format f_data; 

Тогда я мог читать и писать всю эту структуру в расположение файла или памяти.

Как бы это сделать в классе в java?

ответ

1

Если вы хотите добиться аналогичного эффекта, вы можете сделать следующее.

К сожалению, вы не столько контроль над тем, как она представлена ​​в памяти, как вы в с

public class file_data_format 
{ 
    public char name[8][20]; 
    public float amp[8]; 
    public int filter[8]; 
} 

...

public static void main() 
{ 
    file_data_format fdf = new file_data_format(); 
    fdf.name = charArrayIGotFromSomewhere 
} 
+0

+1 один, поскольку это единственный, который действительно имитирует простоту доступа к области структуры. Для пользы OP я хочу подчеркнуть, что нарушение инкапсуляции, как это, считается смертельным грехом в области ООП - частные поля с публичными геттерами/сеттерами предпочтительнее, несмотря на шаблон. – ach

+1

С IDE шаблон может быть заполнен 3-4 щелчками мыши. Люди должны это знать. –

1
public class FileDataFormat { 
    private String name; 
    private float amp; 
    private int filter; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public float getAmp() { 
     return amp; 
    } 

    public void setAmp(float amp) { 
     this.amp = amp; 
    } 

    public int getFilter() { 
     return filter; 
    } 

    public void setFilter(int filter) { 
     this.filter = filter; 
    } 

} 
+1

спасибо, что напомнили мне, почему C# превосходит java –

2

Вы должны прочитать основы Java перед запросом. Структура в C может быть записана как класс в Java.

public class FileDataFormat implements Serializable { 

    String[][] name = new String[8][20]; 
    float[] amp = new float[8]; 
    int[] filter = new int[8]; 

    public FileDataFormat() { 

    } 

    public void setName(String[][] name) { 
     this.name = name; 
    } 

    public String[][] getName() { 
     return this.name; 
    } 

    // next getters and setters 
} 

Я очень рекомендую ООП (инкапсуляция, полиморфизм, наследование).

+0

Вероятно, вы должны хранить обозначения массива для этих переменных, учитывая, что массив 'float' не совпадает с одним 'float' (тот же для' int') , 2D-массив 'name' в его коде должен быть массивом из 8' String 'в классе Java. Если OP действительно не хочет массивов. – ajp15243

+0

@ ajp15243 anwer обновлен. – Sajmon

1

Эквивалент структуры в Java - это JavaBean, как показали другие ответы.

От Wikipedia, A JavaBean:

  • сериализуемый
  • имеет конструктор 0-аргумент
  • позволяет получить доступ к свойствам, используя методы получения и установки.

Чтобы писать и читать его из файла или памяти, это не так просто, как в C. Вы, как правило, используют Java Object serialization писать/читать ваши объекты на ObjectInputStream/ObjectOutputStream, которые могут быть присоединены к файлу или массив байтов.

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