JAVA中的类数组(将其用作结构)
我有一个关于如何创建类数组的问题。我的背景是嵌入式C,所以Java对我来说有点新 在C语言中,您可以创建一个结构。在java中,我发现这是不可能的,所以我创建了一个类:JAVA中的类数组(将其用作结构),java,arrays,Java,Arrays,我有一个关于如何创建类数组的问题。我的背景是嵌入式C,所以Java对我来说有点新 在C语言中,您可以创建一个结构。在java中,我发现这是不可能的,所以我创建了一个类: public class Message { public String Text; public enum Type {warning,caution,advisory,engineering}; public enum Actions {yes,no}; public int priority
public class Message
{
public String Text;
public enum Type {warning,caution,advisory,engineering};
public enum Actions {yes,no};
public int priority;
public Message(String Text,Type nType,Actions nActions,int priority)
{
this.Text = Text;
type = nType;
actions = nActions;
this.priority = priority;
}
private Type type;
private Actions actions;
public String getText() { return Text; }
public void setText(String Text) { this.Text = Text; }
}
所以我用它作为一个“结构”(在C中)
我想为这个类创建一个数组
我主要做的是:
public class Main extends AppCompatActivity
{
SurfaceView cameraView;
TextView textView;
CameraSource cameraSource;
final int RequestCameraPermissionID = 1001;
Message[] dbmessage;
dbmessage = new Message[300];
dbmessage[0] = new Message("TEST MESSAGE", Message.Type.warning,Message.Actions.no,1);
}
基本上我应该做什么:(最佳答案)
}
编译器显示了一个错误:“未知类dbmessage”我认为主要是语法错误 你们中有谁能给我点颜色看看,或者朝好的方向踢一脚 请对我耐心,因为Java(甚至编程)不是我的职业,我只是想学习 编辑:多亏了多个成员指出我在方法之外使用了代码。这就是解决方案(显然)。来自MAIN的代码现在被放置在一个方法中,并且工作得非常完美。谢谢你们的耐心和帮助 检查这个类实例数组 <> >我建议您使用<代码> ARAYLISTAB/COD>,这与C++中的代码>向量< /代码>类似。
List<Message> myList = new ArrayList<Message>();
myList.add(new Message("TEST MESSAGE", Message.Type.warning,Message.Actions.no,1));
List myList=new ArrayList();
添加(新消息(“测试消息”,Message.Type.warning,Message.Actions.no,1));
您的问题是在静态上下文中引用非静态变量。您需要做的是以下几点:
创建mainclass的实例,
创建一个符合您需要的非静态空间
从类实例调用该void:
这对我很有用:
class Program
{
public static void main (String[] args)
{
Program p = new Program();
p.Run();
}
public void Run()
{
Message[] array = new Message[300];
array[0] = new Message("TEST MESSAGE", Message.Type.warning,Message.Actions.no,1);
}
}
如果您从类Main提供给我们的代码是完整的(不可能是完整的,因为缺少导入),那么您将尝试在方法之外编写语句。这在Java语法中是不允许的。正确的代码段应该是:
public class Main extends AppCompatActivity
{
SurfaceView cameraView;
TextView textView;
CameraSource cameraSource;
final int RequestCameraPermissionID = 1001;
// you have to put it into a method.
public void myMethod() {
Message[] dbmessage;
dbmessage = new Message[300];
dbmessage[0] = new Message("TEST MESSAGE", Message.Type.warning,Message.Actions.no,1);
}
}
我建议您获得关于Java和Android编程的优秀教程/教科书。否则,这将是一次令人沮丧的经历。当然,《Java风格指南》中还有很多章节。“我认为主要是语法错误?”编译器非常擅长告诉您是否存在语法错误。编译器是怎么说的?未知类dbmessage(在main的第2行)包含您问题中的所有主类。您发布的代码是可编译的。。。。你能更具体地解释一下“这不起作用”的含义吗?编辑你的问题,包括主类的完整代码以及完整的错误消息。它不会回答问题。现在还不清楚真正的问题是什么。这篇文章的第一句话是“我有一个关于如何制作一系列类的问题”。我提供的链接已经回答了这个问题,我只是添加了一些个人建议。他知道如何创建数组,他显示的代码在语法上是正确的。我们想找出他真正的问题是什么。如果他只是设法提供有用的信息。与类是静态的或非静态的无关。我指的是实际的数组。您无法访问它,因为main是static。正如您所看到的,数组是
main
中的局部变量。我不关心您的代码。你不是问这个问题的人。他收到了一条错误消息,因为他在静态上下文中引用了一个非静态变量。你是100%正确的!我非常关注这个类,认为错误就在这里,所以我把代码放在了一个方法之外!的确,这是一个愚蠢的错误,但非常感谢您指出这一点!
public class Main extends AppCompatActivity
{
SurfaceView cameraView;
TextView textView;
CameraSource cameraSource;
final int RequestCameraPermissionID = 1001;
// you have to put it into a method.
public void myMethod() {
Message[] dbmessage;
dbmessage = new Message[300];
dbmessage[0] = new Message("TEST MESSAGE", Message.Type.warning,Message.Actions.no,1);
}
}