Java 在这种情况下,抽象和静态将是有用的。我怎样才能解决它?
我希望有一个抽象的helper类,在这个类中实例化我在helper子类中需要的类。在抽象类中,有一个方法对于所有子类都是通用的,但是它对于每个子类都有一个细微的区别,因此必须特别实现。 通常,一个helper类只有静态方法,最好有一个抽象的静态方法,这样它必须在所有子类中都存在/实现,并且可以作为helper方法调用。但我们都知道这是不可能的 以下是我的具体例子:Java 在这种情况下,抽象和静态将是有用的。我怎样才能解决它?,java,abstract-class,static-methods,Java,Abstract Class,Static Methods,我希望有一个抽象的helper类,在这个类中实例化我在helper子类中需要的类。在抽象类中,有一个方法对于所有子类都是通用的,但是它对于每个子类都有一个细微的区别,因此必须特别实现。 通常,一个helper类只有静态方法,最好有一个抽象的静态方法,这样它必须在所有子类中都存在/实现,并且可以作为helper方法调用。但我们都知道这是不可能的 以下是我的具体例子: public abstract class ClientHelper { protected static A a= new A
public abstract class ClientHelper
{
protected static A a= new A();
protected static B b= new B();
...
abstract static public String getX( String id );
}
public static class UserType1ClientHelper extends ClientHelper
{
@Override
public String getX( String id )
{
return a.getX(id, SPECIFIC_PARAMETER_FOR_USERTYPE1)
}
...
}
public static class UserType2ClientHelper extends ClientHelper
{
@Override
public String getX( String id )
{
return b.getX(id, SPECIFIC_PARAMETER_FOR_USERTYPE2)
}
...
}
我如何以“可能”的方式复制这一点
通常情况下,帮助器类只有静态方法
是一种抽象的静态方法
具有静态方法的Helper类是可以的,但若您并没有实现它,那个么在Helper类中作为abstract
method存在该方法将如何发挥作用
我理解,您喜欢使用
ClientHelper
类型引用为所有派生类调用该方法。由于该方法是抽象的,并且派生类必须为其提供实现,因此将其设置为非静态的,即删除静态的,并将其用作实例方法。由于基类需要了解类A和B,您可以执行以下操作:
enum ClientHelper {
USER_TYPE_1(new A()),
USER_TYPE_2(new B());
private ClientHelper(... obj) {
}
public String getX(String id) {
...
}
}
和/或
enum ClientHelper {
USER_TYPE_1() {
A a = new A();
@Override
public String getX(String id) {
...
}
},
USER_TYPE_2() {
...
};
public abstract String getX(String id);
}
String x = ClientHelper.USER_TYPE2.getX("H");
后者更详细,但允许更多的差异
它使用的是每个枚举值都是静态实例。只是不要使用静态实例。依赖项注入可以帮助您将引用分发到辅助对象。虽然在本例中,我首先会质疑是否需要多个帮助器类。但随后我必须实例化该类。。。我主要关心的不是通过使用
ClientHelper
为所有派生类调用该方法,而是强制所有子类实现该方法,并在不实例化子类的情况下对其进行处理。@Francesco实例化一个类有什么错?@biziclop没有错,但是我想要一个helper类,通常它们只有public
static
方法。。。