如何解决访问私有内部类中的公共方法
我有以下代码,我想知道如何访问public method:locationFinder
的{{1}}中的private inner class:LocationBasedFormatter
。
基本上我想从 outer class:LocationFormatter
访问方法 locationFinder
并获得 MyClass
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;
}
}
}
方法的另一个主类:
locationFinder
当我尝试在 public class MyClass {
public static void main(String args[]) {
LocationFormatter loc = new LocationFormatter();
LocationBasedFormatter result = loc.Location("44.54","94.54");
}
}
或 loc
上查找对象/方法时,我无法找到我的方法 result
。我想访问 locationFinder
方法并根据我传递给我的私有变量的值获取 locationFinder
。
我有点困惑,无法在另一个类中获取该方法。但是,如果我在同一个类中编写 main 方法,那么我就可以访问它。
解决方法
看来你需要在接口<div id="react"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
中声明方法locationFinder
并使用这个接口(目前只是一个标记接口)而不是它在私有类中的具体实现:
Formatter
那么这个方法就可以公开访问了:
public static interface Formatter {
List<String> locationFinder();
}
但是,应该为这段代码中的类和方法使用更具描述性的名称。
,从技术上讲,LocationBasedFormatter
不是内部类。这是一个static nested class.
在 public static getLocationBasedFormatterInstance()
类中添加一个 LocationFormatter
方法。此 getLocationBasedFormatterInstance()
可以返回 LocationBaedFomratter
public class LocationFormatter {
...
public static getLocationBasedFormatterInstance(){
LocationBasedFormatter lbf = new LocationBasedFormatter();
return lbf;
}
}
然后,您必须从主方法创建静态嵌套类 LocationBasedFormatter
的对象。
LocationFormatter.LocationBasedFormatter locationFormatter = new LocationFormatter();
LocationBaedFomratter loationBasedFomratter = locationFormatter.getLocationBasedFormatterInstance();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。