Java 嵌套类中的类可访问性
如何访问方法Java 嵌套类中的类可访问性,java,Java,如何访问方法getBMW(),该方法位于private class Model中,而不将class Car和class Model公开 class MyCar { public Car getCar() { return new Car(); } private class Car { public Model getModel() { return new Model(); }
getBMW()
,该方法位于private class Model
中,而不将class Car
和class Model
公开
class MyCar {
public Car getCar() {
return new Car();
}
private class Car {
public Model getModel() {
return new Model();
}
private class Model {
public String getBMW() {
//...
}
//...
}
}
}
class TestCode {
public static void main(String arg[]) {
MyCar car = new MyCar();
car.getCar(). // <= no method getModel()
}
}
classmycar{
公共汽车{
归还新车();
}
私家车{
公共模型getModel(){
返回新模型();
}
私有类模型{
公共字符串getBMW(){
//...
}
//...
}
}
}
类测试代码{
公共静态void main(字符串arg[]){
我的车=新的我的车();
car.getCar()。//您甚至不能从public方法返回privatecar
,但您可以创建一个接口:
public interface BmwModel {
String getBMW();
}
public interface BmwModelProvider {
BmwModel getModel();
}
class MyCar {
public BmwModelProvider getCar() {
return new Car();
}
private class Car implements BmwModelProvider {
@Override
public BmwModel getModel() {
return new Model();
}
private class Model implemements BmwModel {
@Override
public String getBMW() {
//...
}
//...
}
}
}
您甚至不能从public方法返回privateCar
,但您可以创建一个接口:
public interface BmwModel {
String getBMW();
}
public interface BmwModelProvider {
BmwModel getModel();
}
class MyCar {
public BmwModelProvider getCar() {
return new Car();
}
private class Car implements BmwModelProvider {
@Override
public BmwModel getModel() {
return new Model();
}
private class Model implemements BmwModel {
@Override
public String getBMW() {
//...
}
//...
}
}
}
我知道你想要这个模型,但也许这有帮助
class MyCar {
public Car getCar() {
return new Car();
}
public Car.Model getModel() {
return getCar().getModel();
}
public String getModelBMW() {
return getModel().getBMW();
}
private class Car {
public Model getModel() {
return new Model();
}
private class Model {
public String getBMW() {
return "BMW";
}
}
}
}
class TestCode {
public static void main(String arg[]) {
MyCar car = new MyCar();
String model = car.getModelBMW();
}
}
您必须为要访问的所有模型方法创建公共方法。我知道您需要该模型,但这可能会有所帮助
class MyCar {
public Car getCar() {
return new Car();
}
public Car.Model getModel() {
return getCar().getModel();
}
public String getModelBMW() {
return getModel().getBMW();
}
private class Car {
public Model getModel() {
return new Model();
}
private class Model {
public String getBMW() {
return "BMW";
}
}
}
}
class TestCode {
public static void main(String arg[]) {
MyCar car = new MyCar();
String model = car.getModelBMW();
}
}
您必须为所有要访问的模型方法创建公共方法。如果类型本身不可用,则调用方无法访问任何方法。尽管使用了反射,但这是不可能的。您必须将其设置为公共
或任何适合您访问权限的修改器,或者设置Car
作为一个单独的类,你可以访问外部世界需要知道Car是什么,然后才能使用它做任何事情。如果类型本身不是,你就不能让调用方访问任何方法。尽管使用了反射,我不建议这样做,但这是不可能的。你必须将它设置为公共的或任何修改器适合您的访问权限,或者将汽车
作为一个单独的类,您可以访问外部世界,需要知道汽车是什么,然后才能使用oneNot working执行任何操作。无法解析符号“Model”
,接口
在类之外,而模型
不会退出。对,我没有注意到模型
也是私有嵌套的。我已经做了更改,但是现在您可以看到公共方法getBmw
已经用“BMW”污染了整个抽象接口结构。像个魔咒一样工作!谢谢!不工作。无法解析符号“Model”
,接口在类外,模型
没有退出。对,我没有注意到模型
也是私有嵌套的。我已经做了更改,但现在你可以看到公共方法getBmw
已经污染了整个abs“BMW”的tract接口结构。工作得很有魅力!谢谢!这对我没有帮助。我有嵌套类,我的最终目标是拥有car.getCar().getModel().getBMW()
。我尝试使用interface
,但没有效果。这对我没有帮助。我有嵌套类,我的最终目标是拥有car.getCar().getModel().getBMW()
。我试着使用界面
,但没有效果。