Java 泛型抽象方法参数
Java generic abstract method parameters
我正在努力更好地掌握抽象并运行遇到一个问题。
我有以下 classes:
摘要class:
public abstract class Box {
abstract <T extends Mass> void putMassInBox(T mass);
}
实现:
public class CircleBox extends Box {
@Override
void putMassInBox(Mass mass) {
CircleMass circleMass = (CircleMass) mass;
}
}
下面的那个会导致错误,因为它无法将 SquareMass 识别为质量,或者我告诉它的方法不正确。
public class SquareBox extends Box {
@Override
void putMassInBox(SquareMass mass) {
// TODO Auto-generated method stub
}
}
这是群发界面:
public interface Mass {
}
下面是它的实现:
public class CircleMass implements Mass {
}
public class SquareMass implements Mass {
}
所以我想强制采用一种方法,该方法根据它的实现方式获取参数。我知道我可以像 circleMass 示例中那样投射质量,但我想知道这是否是最好的方法?是否可以强制采用任何对象扩展不同对象的方法?是否值得付出额外的努力,或者正在铸造进行这种抽象的标准方法。
您必须使 class 通用,而不是方法:
public abstract class Box<T extends Mass> {
abstract void putMassInBox(T mass);
}
public class CircleBox extends Box<CircleMass> {
@Override
void putMassInBox(CircleMass mass) {
}
}
我正在努力更好地掌握抽象并运行遇到一个问题。
我有以下 classes:
摘要class:
public abstract class Box {
abstract <T extends Mass> void putMassInBox(T mass);
}
实现:
public class CircleBox extends Box {
@Override
void putMassInBox(Mass mass) {
CircleMass circleMass = (CircleMass) mass;
}
}
下面的那个会导致错误,因为它无法将 SquareMass 识别为质量,或者我告诉它的方法不正确。
public class SquareBox extends Box {
@Override
void putMassInBox(SquareMass mass) {
// TODO Auto-generated method stub
}
}
这是群发界面:
public interface Mass {
}
下面是它的实现:
public class CircleMass implements Mass {
}
public class SquareMass implements Mass {
}
所以我想强制采用一种方法,该方法根据它的实现方式获取参数。我知道我可以像 circleMass 示例中那样投射质量,但我想知道这是否是最好的方法?是否可以强制采用任何对象扩展不同对象的方法?是否值得付出额外的努力,或者正在铸造进行这种抽象的标准方法。
您必须使 class 通用,而不是方法:
public abstract class Box<T extends Mass> {
abstract void putMassInBox(T mass);
}
public class CircleBox extends Box<CircleMass> {
@Override
void putMassInBox(CircleMass mass) {
}
}