好的,所以最近我想实现以下
decimalplaces_vec <- function(x) {
vector <- c()
for (i in 1:length(x)){
if(!is.na(as.numeric(x[i]))){
if ((as.numeric(x[i]) %% 1) != 0) {
vector <- c(vector, nchar(strsplit(sub('0+$', '', as.character(x[i])), ".", fixed=TRUE)[[1]][[2]]))
}else{
vector <- c(vector, 0)
}
}else{
vector <- c(vector, NA)
}
}
return(max(vector))
}
为了安全起见,我想添加public enum ObjectTypes {
STRING,
INTEGER
}
interface IObjectEnhancer{
void enhance(String s);
void enhance(Integer i);
ObjectTypes getLastEnhancedType();
}
class ObjectEnhancer implements IObjectEnhancer{
ObjectTypes lastUsedType=null;
@CallSuper
@Override
public void enhance(String s) {
this.lastUsedType=ObjectTypes.STRING;
}
@CallSuper
@Override
public void enhance(Integer i) {
this.lastUsedType=ObjectTypes.INTEGER;
}
@Override
final public ObjectTypes getLastEnhancedType() {
return lastUsedType;
}
}
class ObjectEnhancerChild extends ObjectEnhancer{
@Override
public void enhance(String s) {
super.enhance(s);
//child code
}
@Override
public void enhance(Integer i) {
super.enhance(i);
//child code
}
}
,因为我真的只希望父母记住类型,但我也希望@CallSuper
和enhance(String)
为enhance(Integer)
,所以没有笨拙的未来人(包括我在内)会忘记实际实现这些方法。
因此,下面是一种处理这种情况的方法,显然只有我有这种情况,而互联网并没有真正的建议,担心这么小的事情似乎很愚蠢,但是如果您有10多种方法,星星变成噩梦(欢迎反馈和其他解决方案):
答案 0 :(得分:1)
只需创建新的abstract
方法,以使子级被强制实现,而父级方法将调用abstract
方法,而不是使用abstract
:
@CallSuper