首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java构造函数:创建一个对象,短参数被解释为int

Java构造函数:创建一个对象,短参数被解释为int
EN

Stack Overflow用户
提问于 2012-09-25 11:37:07
回答 2查看 2.6K关注 0票数 1

我正在用Java编写一个小的排序程序,旨在获取一个“学生”对象,并根据参数和属性确定它的名称、职业和课堂。然而,当我尝试创建第一个对象时,出现了一个问题。到目前为止,一切看起来都是这样的:

代码语言:javascript
运行
复制
public class Student {
    private String name, classroom;
    /**
     * The career code is as follows, and I quote:
     * 0 - Computer Science
     * 1 - Mathematics
     * 2 - Physics
     * 3 - Biology
     */
    private short career, idNumber;

    public Student (String name, short career, short idNumber){
        this.name = name;
        this.classroom = "none";
        this.career = career;
        this.idNumber  = idNumber;
    }

    public static void main(String args[]){
        Student Andreiy = new Student("Andreiy",0,0);
    }
}

错误出现在对象创建行,因为由于某些原因,当构造函数调用shorts时,它坚持将0,0解释为整数,从而导致不匹配问题。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-25 12:21:35

一种方法是使用强制转换告诉编译器该值是一个short

代码语言:javascript
运行
复制
Student Andreiy = new Student("Andreiy",(short)0,(short)0);

或者,重新定义Student类以接受int而不是short。(对于职业代码,我建议使用enum。)

票数 2
EN

Stack Overflow用户

发布于 2012-09-25 12:44:18

您应该将Integer转换为short。整数到短整型转换需要缩小范围,因此需要显式强制转换。只要你有内存限制,你就应该在java中使用整数。

代码语言:javascript
运行
复制
public Student (String name, Career career, int idNumber)

//Enumeration for Career so no additional checks are required.
 enum Career
 {
     Computer_Science(0),Mathematics(1),Physics(2),Biology(3);
     private Career(int code)
     {
         this.code = code;
     }
     int code ;

     public int getCode()
     {
         return code;
     }

 }

然后你可以像下面这样做

代码语言:javascript
运行
复制
new Student("Andreiy", Career.Computer_Science, 0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12575876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档