【发布时间】:2015-12-05 16:05:31
【问题描述】:
假设我有一个如下定义的简单接口:
public interface Cipher
{
public String encode(String original);
public String decode(String encoded);
}
在此示例中,该接口用于创建一些表示不同基本密码的对象。一种这样的密码的工作原理是获取给定的字符串并将其逐个字符地输入到二维数组中,方法是从数组的左上角开始,并在移动到下一行之前遍历每一行。 encode 方法通过在移动到下一列之前向下读取该数组来创建编码字符串。这显示在下面的代码中:
public class TopLeftColumnRow implements Cipher
{
public TopLeftColumnRow()
{
}
public String encode(String original)
{
String encoded = "";
int dimension;
int x=0;
int y=0;
int pos=0;
dimension = ((int)Math.ceil(Math.pow((double)original.length(),0.5)));
String[][] LocalBox = new String[dimension][dimension];
for(x=0;x<dimension;x++)
{
for(y=0;y<dimension;y++)
{
try
{
LocalBox[x][y]=original.substring(pos,pos+1);
pos++;
}catch(StringIndexOutOfBoundsException ex)
{
LocalBox[x][y]="*";
}//catch(StringIndexOutOfBoundsException ex)
}//for(y=0;y<dimension;y++)
}//for(x=0;x<dimension;x++)
for(y=0;y<dimension;y++)
{
for(x=0;x<dimension;x++)
{
encoded+=LocalBox[x][y];
}//for(x=0;x<dimension;x++)
}//for(y=0;y<dimension;y++)
return encoded;
}//encode
public String decode(String encoded)
{
int dimension;
int x=0;
int y=0;
int pos=0;
dimension = ((int)Math.ceil(Math.pow((double)encoded.length(),0.5)));
String[][] LocalBox = new String[dimension][dimension];
String decoded="";
for(x=0;x<dimension;x++)
{
for(y=0;y<dimension;y++)
{
try
{
LocalBox[y][x]=encoded.substring(pos,pos+1);
pos++;
}catch(StringIndexOutOfBoundsException ex)
{
LocalBox[y][x]="*";
}//catch(StringIndexOutOfBoundsException ex)
}//for(y=0;y<dimension;y++)
}//for(x=0;x<dimension;x++)
for(y=0;y<dimension;y++)
{
for(x=0;x<dimension;x++)
{
if((LocalBox[y][x].compareTo("*"))!=0)
decoded+=LocalBox[y][x];
}//for(x=0;x<dimension;x++)
}//for(y=0;y<dimension;y++)
return decoded;
}//decode
}//TopLeftColumnRow
由于加密算法每次都完全相同,并且没有存储任何属性,因此将 TopLeftColumnRow 设置为 static 类是有意义的,但是这样做是这样的:
public static class TopLeftColumnRow implements Cipher
产生错误。 Java 是否通常允许接口的静态实现,或者这是我的特定错误?我该如何解决这个问题?
【问题讨论】:
-
一个普通的外部类默认是
static,所以添加关键字没有意义。内部类可以是静态的或非静态的,因此您可以使用statickeyword。 -
外部类怎么可能是静态的???
标签: java arrays oop interface static