在私有内部 类 中访问 public 方法
Accessing public methods in private inner classes
我有下面的代码,我想知道如何访问outer class:LocationFormatter
的private inner class:LocationBasedFormatter
中的public method:locationFinder
。
基本上我想从 MyClass
访问方法 locationFinder
并获得 List<String>
@Getter
@Setter
public class LocationFormatter {
public static final Formatter Location(String longitute, String latitude) {
return new LocationBasedFormatter(longitute, latitude)
}
public static interface Formatter {}
@AllArgsConstructor
private static final class LocationBasedFormatter implements Formatter {
private String longitute;
private String latitude;
public final List < String > locationFinder() {
String location = "Your Long: " + this.longitute + " Your Lat: " + this.latitude;
List < String > randomList = new ArrayList < String > ()
randomList.add(location)
return randomList;
}
}
}
以下是我的另一个主要 class,我需要从那里传递值并访问 locationFinder
方法:
public class MyClass {
public static void main(String args[]) {
LocationFormatter loc = new LocationFormatter();
LocationBasedFormatter result = loc.Location("44.54", "94.54");
}
}
当我试图在 loc
或 result
上找到 Objects/Methods 时,我无法找到我的方法 locationFinder
。我想访问 locationFinder
方法并根据我传递给私有变量的值获取 List
。
我有点困惑,无法在另一个 class 中获取方法。但是,如果我在同一个 class 中编写主要方法,那么我就可以访问它。
看来你需要在接口Formatter
中声明方法locationFinder
并使用这个接口(目前只是一个标记接口)而不是它在私有class中的具体实现:
public static interface Formatter {
List<String> locationFinder();
}
那么这个方法将可以公开访问:
public class MyClass {
public static void main(String args[]) {
// no need to instantiate LocationFormatter, Location is static method
Formatter result = LocationFormatter.Location("44.54", "94.54");
List<String> locationList = result.locationFinder();
}
}
但是,在此代码中 classes 和方法应该使用更具描述性的名称。
技术上 LocationBasedFormatter
不是内部 class。这是一个 static nested class.
在LocationFormatter
class中添加一个public static getLocationBasedFormatterInstance()
方法。这个 getLocationBasedFormatterInstance()
可以 return LocationBaedFomratter
的实例
public class LocationFormatter {
...
public static getLocationBasedFormatterInstance(){
LocationBasedFormatter lbf = new LocationBasedFormatter();
return lbf;
}
}
然后你必须从你的 main 方法创建一个静态嵌套的对象 class LocationBasedFormatter
。
LocationFormatter.LocationBasedFormatter locationFormatter = new LocationFormatter();
LocationBaedFomratter loationBasedFomratter = locationFormatter.getLocationBasedFormatterInstance();
我有下面的代码,我想知道如何访问outer class:LocationFormatter
的private inner class:LocationBasedFormatter
中的public method:locationFinder
。
基本上我想从 MyClass
访问方法 locationFinder
并获得 List<String>
@Getter
@Setter
public class LocationFormatter {
public static final Formatter Location(String longitute, String latitude) {
return new LocationBasedFormatter(longitute, latitude)
}
public static interface Formatter {}
@AllArgsConstructor
private static final class LocationBasedFormatter implements Formatter {
private String longitute;
private String latitude;
public final List < String > locationFinder() {
String location = "Your Long: " + this.longitute + " Your Lat: " + this.latitude;
List < String > randomList = new ArrayList < String > ()
randomList.add(location)
return randomList;
}
}
}
以下是我的另一个主要 class,我需要从那里传递值并访问 locationFinder
方法:
public class MyClass {
public static void main(String args[]) {
LocationFormatter loc = new LocationFormatter();
LocationBasedFormatter result = loc.Location("44.54", "94.54");
}
}
当我试图在 loc
或 result
上找到 Objects/Methods 时,我无法找到我的方法 locationFinder
。我想访问 locationFinder
方法并根据我传递给私有变量的值获取 List
。
我有点困惑,无法在另一个 class 中获取方法。但是,如果我在同一个 class 中编写主要方法,那么我就可以访问它。
看来你需要在接口Formatter
中声明方法locationFinder
并使用这个接口(目前只是一个标记接口)而不是它在私有class中的具体实现:
public static interface Formatter {
List<String> locationFinder();
}
那么这个方法将可以公开访问:
public class MyClass {
public static void main(String args[]) {
// no need to instantiate LocationFormatter, Location is static method
Formatter result = LocationFormatter.Location("44.54", "94.54");
List<String> locationList = result.locationFinder();
}
}
但是,在此代码中 classes 和方法应该使用更具描述性的名称。
技术上 LocationBasedFormatter
不是内部 class。这是一个 static nested class.
在LocationFormatter
class中添加一个public static getLocationBasedFormatterInstance()
方法。这个 getLocationBasedFormatterInstance()
可以 return LocationBaedFomratter
public class LocationFormatter {
...
public static getLocationBasedFormatterInstance(){
LocationBasedFormatter lbf = new LocationBasedFormatter();
return lbf;
}
}
然后你必须从你的 main 方法创建一个静态嵌套的对象 class LocationBasedFormatter
。
LocationFormatter.LocationBasedFormatter locationFormatter = new LocationFormatter();
LocationBaedFomratter loationBasedFomratter = locationFormatter.getLocationBasedFormatterInstance();