2013-06-11 2 views
-3

Если я ставлю gotomething ниже, если это заявление, будет ли оно работать? Если нет, как это сделать, возвращайте getSomething для каждого, если что-то.эквивалентное (x) утверждение? PS: Игнорировать синтаксис. Если оператор находится в основном методе.Java if statements логистика

if (something.equals(x))){ 
    return getSomething; 

    private void getSomething() { 
    String variable1 = "SELECT x from y"; 
    return; 
    } 
} 
+5

Вы пытаетесь определить метод внутри другого метода? – ruakh

+1

Когда вы сталкиваетесь с сомнением, что это похоже на «это сработает», вы можете попробовать сами. Это не похоже на запись в Eclipse, и отладка будет стоить вам руки. – Renan

+0

И это неправильное использование слова «логистика». Логистика не имеет ничего общего с логикой. – EJP

ответ

2

Это не сработает, потому что Java не позволяет устанавливать определения методов. Кроме того, вы должны включать пустые круглые скобки () в вызове метода, даже если нет параметров, и вы не можете вернуть результат вызова метода void.

2

Это будет работать, если вы определите getSomething() как обычный метод в этом классе (и он возвратил тот же тип, что и этот метод, который в настоящий момент не является недействительным), но вы не можете вложить определения метода ,

Если вам нужен только метод getSomething(), который будет использоваться в этом случае, просто объявите его закрытым, чтобы он не мог использоваться вне этого конкретного класса.

+0

Что вы имеете в виду? Вы имеете в виду внутри основного метода? – user2476268

+0

Нет, внутри класса, как другой метод верхнего уровня. Вы не можете объявить один метод внутри другого таким образом. – berry120

1

Вы не можете вложить методы таким образом. Вместо этого разразите свой метод следующим образом:

public String someMethod() { 
    if (something.equals(x))) { 
     return getSomething(); 

    return getSomethingElse(); 
} 

private String getSomethingElse() { 
    return "SELECT x from y"; 
}