Java新手,但我做了一些.Net编程。我想知道Java是否相当于.Net eum?以下是一个例子。我知道Java有枚举,但你不能为它赋值。
在.Net中,我可以使用值进行枚举。在代码中使用时,我不必发表评论,或者在编写新程序时,记住0,1,2和3代表的内容。我也可以在构造函数中使用enum作为参数类型,然后将AccessType.Full作为参数传递给它。
我如何复制这个是Android Studio?
Public Class Delete
Private Enum AccessType
Full = 0
ReadOnly = 1
Delete = 2
Add = 3
End Enum
Private Sub DeleteIem(sItem As String)
If User.Access = AccessType.Delete Or User.Access = AccessType.Full Then
'delete something here
Else
MsgBox("You do not have access to delete these items.", vbInformation
End If
End Sub
End Class
在Android Studio中,我有下面的if {}块。
if (AllLists.get(pos).Access == 0) {
MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n";
}
else if (AllLists.get(pos).Access == 1){
MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n";
}
else if (AllLists.get(pos).Access == 2){
MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n";
}
它会将代码转到下面,我不必总是检查0,1,2和& 3表示。我查找了Java枚举,它们只是一个字符串列表,对此不起作用,或者至少不是我认为可以实现它。
if (AllLists.get(pos).Access == AccessType.Full) {
MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n";
}
else if (AllLists.get(pos).Access == AccessType.ReadOnly){
MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n";
}
else if (AllLists.get(pos).Access == AccessType.Delete){
MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n";
}
答案 0 :(得分:4)
实际上,java枚举是一个非常方便的对象。 如果需要,您可以添加属性,甚至方法。要分配属性,只需将值作为参数添加到构造函数中,如下所示:
public enum AccessType {
Full(0),
ReadOnly(1),
Delete(2),
Add(3);
private final int code;
AccessType(int code) {
this.code = code
}
public int getCode() {
return this.code;
}
}
答案 1 :(得分:1)
请查看Oracle的此页面:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
您的ENUM(代码未经测试)会有类似的内容:
public enum AccessType
{
Full(0),
ReadOnly(1),
Delete(2),
Add(3);
AccessType(int type)
{
this.type = type;
}
}
但是构造函数本身可能没有必要,因为你可以使用这样的switch case:
switch(AllLists.get(pos).Access)
{
case Full:
// ...
break;
case ReadOnly:
// ...
break;
case Delete:
// ...
break;
case Add:
// ...
break;
}