[英]Im trying to export EC Public keys from android to iOS, what is the best way to do this?
[英]Is it the right way to do what Im trying? Abstract static variable?
看下面的代碼。 似乎有更簡單的方法可以做到。
對於要添加到系統中的每個新Class
,我必須執行以下操作以設置類變量(靜態-> maxPlayers)?
像抽象靜態變量一樣?
protected abstract class Class{
protected abstract int getMaxPlayers();
public class Soldier extends Class{
public static final int maxPlayers = 4;
@Override
protected int getMaxPlayers() {
return Soldier.maxPlayers;
}
}
public class Demoman extends Class{
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Demoman.maxPlayers;
}
}
public class Scout extends Class{
public static final int maxPlayers = 4;
@Override
protected int getMaxPlayers() {
return Scout.maxPlayers;
}
}
public class Medic extends Class{
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Medic.maxPlayers;
}
}
}
就像我必須重復此模板一樣:
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Medic.maxPlayers;
}
我認為這樣做是不正確的。
首先,您不應該為您的類命名Class
(甚至不為示例命名)。 選擇一個更好的名字。
其次,似乎枚舉就是您真正需要的:
public enum Army {
SOLDIER(4),
DEMOMAN(2),
SCOUT(4),
MEDIC(2);
private final int maxPlayers;
private Army(int maxPlayers) {
this.maxPlayers = maxPlayers;
}
public int getMaxPlayers() {
return maxPlayers;
}
}
不,您不能在基類中為每個子類都具有不同值的靜態變量(據我所知,這是您理想中要執行的操作)。
這樣做的方法是一種選擇,另一種方法是使用非靜態變量,如下所示。
並且變量最好比getter函數的作用域更小。
class Class
{
private final int maxPlayers;
Class(int max)
{
maxPlayers = max;
}
public int getMaxPlayers()
{
return maxPlayers;
}
}
class Soldier extends Class
{
Soldier()
{
super(4);
}
}
為了提高可讀性和可修改性,您可能需要考慮在此處用enum
或類似名稱替換4
。
其他方式:
abstract class Class
{
public static int MAX_PLAYERS_SOLDIER = 4,
MAX_PLAYERS_DEMOMAN = 2,
...;
protected abstract int getMaxPlayers();
}
class Soldier extends Class
{
@Override
protected int getMaxPlayers()
{
return MAX_PLAYERS_SOLDIER;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.