Interfejs elementu można zdefiniować tylko w interfejsie klasy najwyższego poziomu lub lub w kontekście statycznym.Jak zdefiniować interfejs użytkownika w kontekście statycznym w java?
Przypadek A: Interfejs obrębie klasy najwyższego poziomu działa idealnie
package multiplei.interfaces.test;
public class InterfaceBetweenClass {
interface Foo {
void show();
}
class InnerClass implements Foo{
public void show(){
System.out.println("Inner Class implements Foo");
}
}
public static void main(String[] args) {
new InterfaceBetweenClass().new InnerClass().show();
}
}
Przypadek B: Interfejs obrębie interfejsu działa dobrze.
public interface Creatable {
interface Foo{
void show();
}}
Przypadek C: Wiem, że to brzmi głupio, dlaczego ktoś miałby określić interfejs w statycznym kontekście. Ale daje mi ten sam komunikat o błędzie, gdy próbuję zdefiniować interfejs w statycznym kontekście.
package multiplei.interfaces.test;
public class InterfaceBetweenClass {
public static void main(String[] args) {
interface Foo { //Line 5
void show();
}
}
}}
Ale numer linii 5 daje mi się następujący komunikat o błędzie "The member interface Foo can only be defined inside a top-level class or interface or in a static context.
"Proszę mi pomóc z tym Jeśli interfejs może być zdefiniowana w kontekście statyczne to jak?
Nawet gdyby było to możliwe, nie byłoby sensu tworzenie interfejsu w ramach metody. Ten interfejs nie byłby widoczny poza zakresem metod, nawet w anonimowych klasach wewnętrznych, które później zostaną utworzone w tej samej metodzie. –
@ TimothyTruckle Nie wiem o tym. Wydaje się, że jest tak samo jak w przypadku "klas lokalnych", a te są dozwolone w ramach metod: http://stackoverflow.com/questions/2428186/use-of-class-definitions-inside-a-method-in-java? noredirect = 1 & lq = 1 – Thilo
@Thilo * "Wygląda na to, że sytuacja wygląda tak samo, jak w przypadku" lokalnych klas "* *. Tworzysz lokalną klasę do natychmiastowego użycia w tej samej metodzie (i nigdzie indziej), podczas gdy tworzysz interfejsy do użytku w * jakimś innym miejscu * zamiast jakiejś konkretnej klasy implementującej je. –