我可以创建一个忽略特定方法的java对象吗?

时间:2014-06-24 12:58:51

标签: java object

考虑我有一个名为Validation的类,有五种方法。所有方法都非常复杂和庞大。在我的应用程序的某个部分,我需要创建一个Validation对象,但我只会使用该对象中的一个方法。我可以使方法static实现我的目的,但是为了使应用程序的其余部分继续工作,这些方法应该是非静态的。

那么有没有办法可以创建一个只包含一个非静态方法的类的对象?

3 个答案:

答案 0 :(得分:1)

没有

关于您可以做的最好的事情(回答问题的答案)是制作方法protected并且具有Validation的子类extends。然后,如果所有其他方法都是private,那么该对象只有一个protected

但是,这是一种糟糕的情况。更有可能的是,如果您正在尝试这样做,那么您要么无缘无故地进行优化,要么在某处设计不好。

如,

public class Validation {

    private void method1() {}
    private void method2() {}
    protected void method3() {}
    private void method4() {}
}

...

public class RestrictedValidation extends Validation { }

...

public static void main(String[] args) {
    RestrictedValidation validation = new RestrictedValidation();
    validation.method1(); //compiler error
    validation.method2(); //compiler error
    validation.method3(); //success
    validation.method4(); //compiler error
}
但是,是的。我想不出一个有效的用例。

答案 1 :(得分:0)

你可以通过继承来解决这个问题,其中ValidationA将包含大多数客户端使用的常用方法(这里是你的一个特定方法),以及一个ValidationB类,它扩展了ValidationA并添加了更多专门的方法。

或者根据情况,它可能是两个完全不同的对象。

答案 2 :(得分:0)

不,没有这样的方法。对象由状态和相关行为组成。对象将其状态存储在字段中,并通过方法公开其行为。方法在对象的内部状态上运行,并作为对象到对象通信的主要机制。

你所说的是创造一个人物对象(已经定义了行走和跑步的行为),但他应该只走路而不是跑步。它没有任何意义。 Jeff Gohlke提供了一个很好的解决方案