【问题标题】:Android new object classAndroid 新对象类
【发布时间】:2013-01-23 13:22:59
【问题描述】:

我正在尝试创建一个新的“时间”类,

时间.java

public class Time{ 
    public int hour,minute;
    public double second;

    public Time(){
        super();
    }
}

main_activity.java

Time newT = new Time();
newT.hour = 3;

但我在这里得到一个错误:newT.hour

错误(在 Eclipse 中)“令牌“小时”上的语法错误,此令牌后应为 Variabledeclaratorid”

【问题讨论】:

  • 您阅读错误信息了吗?
  • @Dan 你是不是不小心导入了时间?
  • 添加实际解决方案,不要将代码放在main_activity类体中,而是放在方法中。看我的回答。

标签: java access-modifiers


【解决方案1】:

小时的可访问性是private,因此您无法从其他班级访问它。创建 setter 和 getter:

public class Time{ 
    private int hour,minute;
    private double second; 

    public Time(){
        super();
    }

    public void setHour(int hour) { 
        this.hour = hour;
    }

    public int getHour() { 
        return hour;
    }
}

现在通过newT.setHour(3);设置它

编辑:我看到你修改了错误。实际的错误是因为你放了这些行

Time newT = new Time();
newT.hour = 3;

在课程正文中,我假设您有这样的内容:

public class Main {
    Time newT = new Time();
    newT.hour = 3;
}

但是你不能这样做,因为你只能在你的类体中声明变量/方法/类。试试这个:

public class Main {
    public void myMethod {
        Time newT = new Time();
        newT.hour = 3;
    }        
}

【讨论】:

  • 你也添加了这一行>> private double String second; :-O
  • @Ankit 谢谢。 private 修饰符是一个非常明显的错误,我倾向于忽略其余部分。
  • 同意,即使我也在尝试相同的方法,但是得到了这条线并被提问者的问题唤醒,他是如何编译它的,指向另一个问题,但不是这个。 :) :)
  • @ankit 好吧,不管编译器遇到什么编译错误,难道没有一些设置可以编译吗?猜猜他有三倍的设置。
【解决方案2】:

使用setter 和getter 方法的方法。 在您的类中创建两个公共方法来设置小时值并获取它。 这样你就可以使用私有变量了。

否则你需要将它们公开。

【讨论】:

    【解决方案3】:

    首先我想知道你是如何编译这个“private double String second;”行的。 (双字符串一起:-o),现在好了,下面是你的解决方案。

    你的 Time 类应该如下所示

     public class Time{ 
    
            private int hour,minute;
            private double seconds;
    
    
            public int getHour() {
                return hour;
            }
    
            public void setHour(int hour) {
                this.hour = hour;
            }
    
            public int getMinute() {
                return minute;
            }
    
            public void setMinute(int minute) {
                this.minute = minute;
            }
    
            public double getSeconds() {
                return seconds;
            }
    
            public void setSeconds(double seconds) {
                this.seconds = seconds;
            }
        }
    

    并做这样的事情来设置和获取小时/分钟/秒

     Time newT = new Time();
          newT.setHour(1);
    

    同时在你正在编写的新课程中导入时间。

    【讨论】:

      【解决方案4】:

      正如您没有告诉我们的错误明确指出的那样,您无法从课堂外访问private 字段。

      【讨论】:

        猜你喜欢
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多