Испытывание небольших затруднений из-за этого кода Java. Новичок, вероятно, смешивающий некоторые вещи с C#

package practico1;
/**
 * Programador: Sergio Tapia Gutierrez
 * Fecha:       Lunes 10, Mayo - 2010
 * Practico:    1
 */
public class Main {    
    public static void main(String[] args) {
        System.out.println("Esta es una pequena aplicacion para mostrar los");
        System.out.println("distintos tipos de datos que existen en Java 6.");

        //boolean, char, byte, short, int, long, float, double, String

        ejemplosBoolean();
    }

    public void ejemplosBoolean(){

    }

}

Так, я просто проверяю некоторые вещи, но я получаю ошибку при утверждении, что я пытаюсь выполнить ejemplosBoolean () в статическом контексте, когда это не статический метод.

Мой вопрос в Java, методы должны иметь статичный для использования их, даже если они находятся в том же классе?

1
задан 11 May 2010 в 03:46
поделиться

7 ответов

Sergio, вы запускаете не статический метод внутри статического метода, если вы хотите ejemplosBoolean(), сделайте его public static void ejemplosBoolean(). Будь здоров Saludos desde Mexico

2
ответ дан 3 September 2019 в 00:40
поделиться

В вашем main вам нужно сказать что-то вроде:

Main m = new Main();
m.ejemplosBoolean()
0
ответ дан 3 September 2019 в 00:40
поделиться

Для вызова метода ejemplosBoolean вы должны создать экземпляр класса Main. Вы пытаетесь вызвать его из метода main. Попробуйте сделать что-то вроде этого.

public class Main {    
public static void main(String[] args) {
    System.out.println("Esta es una pequena aplicacion para mostrar los");
    System.out.println("distintos tipos de datos que existen en Java 6.");

    //boolean, char, byte, short, int, long, float, double, String
    Main m = new Main();

    m.ejemplosBoolean();
}

public void ejemplosBoolean(){

}

}

Кроме того, я бы, наверное, назвал свой класс не main, чтобы свести путаницу к минимуму.

0
ответ дан 3 September 2019 в 00:40
поделиться

Ваш ejemplosBoolean () - нестатический метод, поэтому для вызова этого метода потребуется экземпляр класса Main. Метод должен быть объявлен статическим, чтобы вызывать его из статического контекста без предварительного создания экземпляра. Это полностью соответствует C #.

0
ответ дан 3 September 2019 в 00:40
поделиться

Проблема в том, что ваш основной код приложения находится в статическом методе (main), поэтому при выполнении кода нет экземпляра класса Main, на котором можно было бы выполнить ejemplosBoolean().

Это похоже на то, что вы имели бы в C#:

public class Program {
    public static void Main() {
        Console.WriteLine("Esta es una pequena aplicacion para mostrar los");
        Console.WriteLine("distintos tipos de datos que existen en Java 6.");

        ejemplosBoolean();
    }
    public void ejemplosBoolean() {
    }
}

Произошла бы аналогичная ошибка, нет экземпляра класса Program, на котором можно было бы вызвать ejemplosBoolean().

0
ответ дан 3 September 2019 в 00:40
поделиться

Если вы не хотите делать методы статическими, но все равно хотите вызывать их из вашего public static void main, вам придется создать экземпляр для вызова:

Main m = new Main();
m.ejemplosBoolean();

и так далее (затем вы можете повторно использовать этот m для других методов, которые вы захотите вызвать, так как он не имеет состояния, по крайней мере, в том коде, который вы показали;-). Хотя в C# это было бы не так!

0
ответ дан 3 September 2019 в 00:40
поделиться

Поведение, которое вы видите, соответствует C#. main является статическим методом, что означает, что вы можете вызывать другие статические функции только из него, если у вас нет ссылки на объект.

Если вы хотите вызвать ejemplosBoolean, вам нужно пометить его как static или инициализировать новый экземпляр класса Main и вызвать его на этом экземпляре.

0
ответ дан 3 September 2019 в 00:40
поделиться
Другие вопросы по тегам:

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