(никакие) свойства в Java?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
55
задан display_name 30 January 2014 в 07:23
поделиться

7 ответов

Существует "стандартный" шаблон для методов get и методов set в Java, названном Свойства компонента . В основном любой метод, запускающийся с get, не беря аргументов и возвращая значение, является методом get свойства для свойства, названного как остальная часть имени метода (с печатавшей строчными литерами буквой запуска). Аналогично set создает метод set пустого метода с отдельным аргументом.

, Например:

// Getter for "awesomeString"
public String getAwesomeString() {
  return awesomeString;
}

// Setter for "awesomeString"
public void setAwesomeString( String awesomeString ) {
  this.awesomeString = awesomeString;
}

Большинство IDE Java генерирует эти методы для Вас, если Вы спросите их (в Eclipse, это столь же просто как перемещение курсора к полю и удару ctrl-1, затем выбирая опцию из списка).

Если это имеет значение, для удобочитаемости можно на самом деле использовать is и has вместо get для свойств булева типа также, как в:

public boolean isAwesome();

public boolean hasAwesomeStuff();
64
ответ дан Daniel A.A. Pelsmaeker 26 November 2019 в 17:48
поделиться

"Поддержка Свойства Java" была предложена для Java 7, но не превращала его на язык.

См. http://tech.puredanger.com/java7#property для большего количества ссылок и информации, если заинтересовано.

8
ответ дан Calum 26 November 2019 в 17:48
поделиться

Бобовое соглашение состоит в том, чтобы записать код как это:

private int foo;
public int getFoo() {
    return foo;
}
public void setFoo(int newFoo) {
    foo = newFoo;
}

На некоторых из других языков на JVM, например, Groovy, Вы получаете переопределяемые свойства, подобные C#, например,

int foo

, к которому получают доступ с простым .foo и усиливает значение по умолчанию getFoo и setFoo реализации, которые можно переопределить по мере необходимости.

6
ответ дан Hank Gay 26 November 2019 в 17:48
поделиться

Большинство IDE для Java автоматически генерирует метода get и код метода set для Вас, если Вы захотите их к. Существует много различных соглашений, и IDE как Eclipse позволит Вам выбирать, какой Вы хотите использовать, и даже позволить Вам определить свое собственное.

Eclipse даже включает автоматизированный рефакторинг, который позволит Вам оборачивать свойство в методе get и методе set, и это изменит весь код, который получает доступ к свойству непосредственно, чтобы заставить его использовать метода get и/или метод set.

, Конечно, Eclipse может только изменить код, который он знает о - любые внешние зависимости, которые Вы имеете, мог быть поврежден таким рефакторингом.

3
ответ дан Bill Michell 26 November 2019 в 17:48
поделиться

Мой опыт Java не состоит в том, что высоко также, таким образом, любой не стесняется исправлять меня. Но AFAIK, общее соглашение состоит в том, чтобы записать два метода как так:

public string getMyString() {
    // return it here
}

public void setMyString(string myString) {
    // set it here
}
2
ответ дан Mark Embling 26 November 2019 в 17:48
поделиться

При использовании затмения тогда, оно имеет возможности к автоматическому, генерируют метод получателя и метод установщика для внутренних атрибутов, это может быть полезный и экономящий время инструмент.

1
ответ дан TK. 26 November 2019 в 17:48
поделиться

Я просто выпускаю Java 5/6 аннотации и процессор аннотации для помощи этому.

Выезд http://code.google.com/p/javadude/wiki/Annotations

документация немного легка прямо сейчас, но quickref должен объяснить идею.

В основном это генерирует суперкласс с методами get/методами set (и много других опций генерации кода).

демонстрационный класс А мог бы быть похожим

@Bean(properties = {
    @Property(name="name", bound=true),
    @Property(name="age,type=int.class)
})
public class Person extends PersonGen {
}

существует намного больше доступных образцов, и в сгенерированном коде нет никаких зависимостей во время выполнения.

Посылают мне электронное письмо, если Вы испытываете его и находите его полезным! - Scott

1
ответ дан Scott Stanchfield 26 November 2019 в 17:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: