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, методы должны иметь статичный для использования их, даже если они находятся в том же классе?
Sergio, вы запускаете не статический метод внутри статического метода, если вы хотите ejemplosBoolean(), сделайте его public static void ejemplosBoolean(). Будь здоров Saludos desde Mexico
В вашем main вам нужно сказать что-то вроде:
Main m = new Main();
m.ejemplosBoolean()
Для вызова метода 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, чтобы свести путаницу к минимуму.
Ваш ejemplosBoolean () - нестатический метод, поэтому для вызова этого метода потребуется экземпляр класса Main. Метод должен быть объявлен статическим, чтобы вызывать его из статического контекста без предварительного создания экземпляра. Это полностью соответствует C #.
Проблема в том, что ваш основной код приложения находится в статическом методе (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().
Если вы не хотите делать методы статическими, но все равно хотите вызывать их из вашего public static void main
, вам придется создать экземпляр для вызова:
Main m = new Main();
m.ejemplosBoolean();
и так далее (затем вы можете повторно использовать этот m
для других методов, которые вы захотите вызвать, так как он не имеет состояния, по крайней мере, в том коде, который вы показали;-). Хотя в C#
это было бы не так!
Поведение, которое вы видите, соответствует C#. main
является статическим методом, что означает, что вы можете вызывать другие статические функции только из него, если у вас нет ссылки на объект.
Если вы хотите вызвать ejemplosBoolean
, вам нужно пометить его как static
или инициализировать новый экземпляр класса Main
и вызвать его на этом экземпляре.