访问私有内部类中的公共方法

时间:2021-01-18 10:39:49

标签: java methods inner-classes private-methods

我有以下代码,我想知道如何访问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 方法,那么我就可以访问它。

2 个答案:

答案 0 :(得分:1)

看来你需要在接口<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();
}

但是,应该为这段代码中的类和方法使用更具描述性的名称。

答案 1 :(得分:0)

从技术上讲,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();
相关问题