在Java中将接口作为返回类型返回时出现问题
我有以下代码:在Java中将接口作为返回类型返回时出现问题,java,android,types,interface,return,Java,Android,Types,Interface,Return,我有以下代码: 文件名:A.java package test1 public interface A { int get(); int set(); } package test1 public class B implements A { int get() { ... } int set() { .... } } package test2 import test1.A; import test1.B; p
文件名:A.java
package test1
public interface A {
int get();
int set();
}
package test1
public class B implements A {
int get() {
...
}
int set() {
....
}
}
package test2
import test1.A;
import test1.B;
publc class C {
public A getNum() {
B test = null;
return(test);
}
}
文件名:B.java
package test1
public interface A {
int get();
int set();
}
package test1
public class B implements A {
int get() {
...
}
int set() {
....
}
}
package test2
import test1.A;
import test1.B;
publc class C {
public A getNum() {
B test = null;
return(test);
}
}
文件名:C.java
package test1
public interface A {
int get();
int set();
}
package test1
public class B implements A {
int get() {
...
}
int set() {
....
}
}
package test2
import test1.A;
import test1.B;
publc class C {
public A getNum() {
B test = null;
return(test);
}
}
当我在Eclipse-->示例Java项目中编译上述代码时,它运行良好。但是当我在Android中编译相同的代码时,它抛出了以下错误::方法C.getNum返回不可用的类型A 请让我知道,我错在哪里 提前感谢,,
Kranti
接口
和实现
不是java关键字。您应该使用接口
和实现
。Java区分大小写。由于其他编译错误,类路径上的类型A
不可用
以下代码应该可以工作:
public class Test {
interface A {
int get();
int set();
}
class B implements A {
@Override
public int get() {
return 0;
}
@Override
public int set() {
return 0;
}
}
class C {
public A getNum(){
A a = new B();
return a;
}
}
}
我根据您的示例生成了该代码。但是你知道我无法想象这段代码有什么用处。假设A.java、B.java在test目录下,C.java在root目录下,上述代码有很多问题
package test;
public interface A {
int get();
int set();
}
B.java
package test;
public class B implements A {
public int get() {
return 0;
}
public int set() {
return 0;
}
}
C.java
import test.A;
import test.B;
public class C {
public A getNum() {
B test = new B();
return test;
}
}
我看到的问题只是在接口A文件中提到包声明,即包test1。声明的是同一个包吗?
C.java
是否有类定义?您需要复制并粘贴精确的代码。在谈论编译器错误消息时特别有用(复制并粘贴这些消息)。@Scrum Meister:是的,C.Java有类定义。我已经更新了代码。请再检查一遍,告诉我哪里做错了。@tomhawtin:Compiler抛出方法C.getNum返回不可用的类型A;没有其他错误/警告。在导入import Test1.A中包括包名代码>@Alex和@Tigris:非常感谢您提供的信息。很抱歉,我不能正确地写出问题中的语法。正如您所建议的,实际代码仅与此类似。Java在另一个目录中。这就是原因,我正在导入其他类。在C.Java->getNum()-->中,我返回(test)。但是编译器抛出了一个错误:getNum()返回不可用的类型A。@Kranti您一定忘了在A/B.java中放置包声明。我已经更新了代码,就好像A和B.java驻留在测试包中一样。。不更改为import src/Test1.A;导入src/Test1.B;我也遇到了同样的编译错误。@Kranti import和package语句使用“.”而不是“/”作为分隔符。如果您希望根包名为“src”,那么包声明将是“package src.Test1”和“package src.Test2”,导入语句将是“import src.Test1.A”和“import src.Test1.B”;抱歉,我不明白您的意思。。您的意思是说,在A.Java中不应该有任何包声明吗?