是否可以只在同一个包和子包中访问一个接口?
Is it possible for an interface to be accessible only in the same package and child packages?
是否可以只在同一个包和子包中访问一个接口?
我定义了一个带有默认修饰符的接口:
package com.mycompany.myapp.dao;
import java.io.Serializable;
interface BaseDao<T, Id extends Serializable> {
public void create(T t);
public T readById(Id id);
public void update(T t);
public void delete(T t);
}
现在我有一个子包,我想在其中定义一个实现 BaseDao
的 class。所以我写了这段代码:
package com.mycompany.myapp.dao.jpa;
import java.io.Serializable;
public class BaseDaoJpa<T, Id extends Serializable> implements BaseDao<T, Id> {
...
}
但是我得到这个错误:
BaseDao cannot be resolved to a type
这是 Java 对界面的限制还是我做错了?
谢谢
在Java中没有"child package"这样的东西。不要被点所迷惑。 com.mycompany.myapp.dao
和 com.mycompany.myapp.dao.jpa
是两个独立的包,彼此没有关系。
所以回答你的问题:不,不可能让一个界面只对子包可见。您可以创建您的界面 public,但之后所有其他包都可以看到它。
查看 Java 访问修饰符:
https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
在table可以看到default或者没有修饰符 仅限于同一包中的相同 class 或其他 class 访问。据我了解,您希望它也对其他包可见,但对世界不可见,为此您需要使用 protected 修饰符,但这是不可能的,因为它不适用所以回到您的问题不,您不能
:- (
看起来你有 extends 需要 implements.
public class BaseDaoJpa<T, Id extends Serializable> implements BaseDao<T, Id>
{
...
}
如果您正在寻找某种方法来隐藏和仅向 Java 应用程序的其余部分公开您想要的内容,也许您需要一个组件,那么看看 OSGi。 This question 是开始阅读(或不阅读)的良好开端。
是否可以只在同一个包和子包中访问一个接口?
我定义了一个带有默认修饰符的接口:
package com.mycompany.myapp.dao;
import java.io.Serializable;
interface BaseDao<T, Id extends Serializable> {
public void create(T t);
public T readById(Id id);
public void update(T t);
public void delete(T t);
}
现在我有一个子包,我想在其中定义一个实现 BaseDao
的 class。所以我写了这段代码:
package com.mycompany.myapp.dao.jpa;
import java.io.Serializable;
public class BaseDaoJpa<T, Id extends Serializable> implements BaseDao<T, Id> {
...
}
但是我得到这个错误:
BaseDao cannot be resolved to a type
这是 Java 对界面的限制还是我做错了?
谢谢
在Java中没有"child package"这样的东西。不要被点所迷惑。 com.mycompany.myapp.dao
和 com.mycompany.myapp.dao.jpa
是两个独立的包,彼此没有关系。
所以回答你的问题:不,不可能让一个界面只对子包可见。您可以创建您的界面 public,但之后所有其他包都可以看到它。
查看 Java 访问修饰符: https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
在table可以看到default或者没有修饰符 仅限于同一包中的相同 class 或其他 class 访问。据我了解,您希望它也对其他包可见,但对世界不可见,为此您需要使用 protected 修饰符,但这是不可能的,因为它不适用所以回到您的问题不,您不能 :- (
看起来你有 extends 需要 implements.
public class BaseDaoJpa<T, Id extends Serializable> implements BaseDao<T, Id>
{
...
}
如果您正在寻找某种方法来隐藏和仅向 Java 应用程序的其余部分公开您想要的内容,也许您需要一个组件,那么看看 OSGi。 This question 是开始阅读(或不阅读)的良好开端。