返回对象的方法名的java
我有能力运行代码,让我进行计算和/或从程序中获取变量信息。然而,我无法访问基本代码,并且想知道是否有一种方法可以打印出一个对象可用的所有方法(public)
例如类形状,以及圆形和方形的子类。 如果我能打印出循环的方法,我可能会看到:
.getRadius()
.setRadius(newValue)
但是Square会
.getSide()
.setSide(newValue)
我有一个我知道我能找到的对象
myObject[1].GetLength()
myObject[1].getDimUom()
myObject[1].getQuantity().getValue()
然而,我不知道我只能设置某些东西,比如(通过尝试和错误)
myObject[1].setClass(newValue)
所以我希望能够找到一种方法,从一个对象打印出方法名;同样没有任何查看或修改基本代码的能力(比如添加反射)
# 1 楼答案
你基本上想要的是阻止信息隐藏,这是OOP中最基本的原则
你(很可能)真正想要的是定义一个通用行为,它可以由子类以特定的方式实现。关于你的例子,这可能是一个在接口中定义的方法
changeSizeTo(int newValue)
,它将由你的类实现,每个类都会做一些特定的事情[更新]
重点不是实际的访问修饰符,而是问题:“这会迫使调用者知道这个对象实际上是什么子类吗?”