我试图分配字符串" unknown"如果条件为false,则返回模块,但它给出了一个错误,指出不兼容的类型。我创建了一个Module实例,它是一个外部类,在单独的模块类本身中具有Module名称的getter和setter。
package com.programming.data;
// it has a module attribute
public class Student
{
private String id;
private String name;
private String address;
private int age;
private Module module;
Module moduleObject = new Module();
public String getId()
{
return this.id;
}
public String getName(){
return this.name;
}
public String getAddress(){
return this.address;
}
public int getAge(){
return this.age;
}
public Module getModule(){
return this.module;
}
public void setId(String id){
this.id =id;
}
public void setName(String name){
this.name = name;
}
public void setAddress(String address){
this.address = address;
}
public void setAge(int age){
if(age<18){
this.age = 18;
}
else{
this.age = age;
}
}
public void setModule(Module module){
if(!module.equals("Programming 1")&&!module.equals("System
Environments")&&!module.equals("Flower
Arranging")&&!module.equals("Neutron Bomb Juggling")) {
this.module = "unknown"; // HERE OCCURS THE ERROR
}
else{
this.module = module;
}
}
}
public class Module {
private String name;
private int duration;
public String getName(){
return this.name;
}
public int getDuration(){
return this.duration;
}
public void setName(String name){
this.name = name;
}
public void setDuration(int duration){
this.duration = duration;
}
}
答案 0 :(得分:2)
Java是一种强类型语言。如果您的变量属于Module
类型,则无法为其指定String
(如“未知”)。
您可能希望创建一个名为“unknown”的Module
实例(“Null Object Pattern”)。或者也许使用null
(这可能会让你陷入所有其他类型的问题)。
类似地,你的module.equals("Flower Arranging")
也不会起作用(即使它编译)。您可能希望比较名称("Flower Arranging".equals(module.getName())
)。
答案 1 :(得分:0)
很明显,你正在设置一个&#34;模块&#34;键入字符串类型,显然它们不兼容,因为Java不允许这样做。尝试将其设置为null,或添加某种&#34; Status&#34;到Module类,所以你可以将它的状态设置为&#34; unknown&#34;