JAVA:如何使用构造函数从另一个类访问私有方法?
因此,我在一个名为Lotion的类中创建了一个方法,并将其命名为read()。该方法接受用户的输入。我的导师告诉我read()方法必须是私有的。但是,他说他的demo/tester类应该能够访问read()方法。他暗示我们必须使用构造函数。但不幸的是,我仍然不明白它应该如何工作。有人能解释一下吗JAVA:如何使用构造函数从另一个类访问私有方法?,java,Java,因此,我在一个名为Lotion的类中创建了一个方法,并将其命名为read()。该方法接受用户的输入。我的导师告诉我read()方法必须是私有的。但是,他说他的demo/tester类应该能够访问read()方法。他暗示我们必须使用构造函数。但不幸的是,我仍然不明白它应该如何工作。有人能解释一下吗 提前谢谢 使用反射并使用setAccessible方法访问私有构造函数。使用反射并使用setAccessible方法访问私有构造函数 因为read()方法是私有的,所以我们不能直接使用它 只需在演示类中
提前谢谢 使用反射并使用setAccessible方法访问私有构造函数。使用反射并使用setAccessible方法访问私有构造函数
我认为您的指导老师在暗示可以从何处调用私有方法,以及您应该如何构造代码。只能从同一个类中调用私有方法(默认情况下,不使用隐藏的技术,如字节码操作,甚至反射,这两种技术都不是本练习的重点)。这也包括构造函数。如果你再仔细想想,你应该拥有你所需要的一切…我想你的指导老师是在暗示在哪里可以调用私有方法,以及你应该如何构造代码。只能从同一个类中调用私有方法(默认情况下,不使用隐藏的技术,如字节码操作,甚至反射,这两种技术都不是本练习的重点)。这也包括构造函数。如果你再考虑一下,你应该拥有你所需要的一切…下面是解决方案。:)下次我希望你在询问之前做一些编码…:p
public class Lotion{
public Lotion(){
System.out.println(read("Constructor"));
}
private String read(String input){
return input;
}
}
class Tester{
public static void main(String[] args) {
new Lotion();
}
}
下面是解决方案。:)下次我希望你在问…:p之前做一些编码
public class Lotion{
public Lotion(){
System.out.println(read("Constructor"));
}
private String read(String input){
return input;
}
}
class Tester{
public static void main(String[] args) {
new Lotion();
}
}
您当前的代码(如评论中所述)
这样,当您创建实例时,它将自动请求用户输入并将答案设置为实例字段
一些设计说明(但不要与您的导师争论):
- 像用户输入这样的“繁重工作”可能不应该作为构造函数的一部分来完成李>
- 如果要从构造函数中调用方法,最好将它们设为私有。否则可以重写它们,然后在未完全构造的对象实例上调用它们
可以返回一个read
,而不是直接更新对象状态李>double
一些设计说明(但不要与您的导师争论):
- 像用户输入这样的“繁重工作”可能不应该作为构造函数的一部分来完成李>
- 如果要从构造函数中调用方法,最好将它们设为私有。否则可以重写它们,然后在未完全构造的对象实例上调用它们
可以返回一个read
,而不是直接更新对象状态李>double
super
构造函数……你确定他说的是构造函数还是反射?他说的构造函数可能重复。还有,反射是什么?他可能是说你应该有另一个(公共)方法或构造函数在内部调用私有方法,从而使它可以间接访问。不过,我不确定从构造函数中获取用户输入是否是一种好的做法。^正如Thilo所说,可能是通过super
构造函数……这在初学者的Java课程中不太可能出现。我同意,我怀疑这个练习的重点是使用反射。重点是考虑语言中可用的不同作用域。您不需要使用反射来完成此处要求的操作。初学者Java课程中不太可能出现这种情况。同意,我怀疑此练习的目的是使用反射。重点是考虑语言中可用的不同作用域。您不需要使用反射来完成这里要求的操作。但是我的方法是无效的。它没有参数pass@jiija然后在调用method@jiija...This这只是一个例子。你需要让它根据你的工作,但我的方法是无效的。它没有参数pass@jiija然后在调用method@jiija...This这只是一个例子。你需要让它根据你的东西工作谢谢你,我不知道它会自动要求它。我想我必须像其他方法一样调用它。例如:name.read();好吧,如果你把它放到构造函数中,它会自动完成所有这些。也许我们不应该把它放在那里(有更多的控制权)。但是
public Lotion(){
read();
}