当我尝试使用还包含generics
的类的方法(两个类都实现接口)时,我遇到了严重的断开连接。我有一个SetInterface
接口,其中包含Set
类的方法。我的ProfileInterface
接口和Profile
类也是如此。在我的Profile
类中,我有以下关于Set
类的类型转换:
private Set<ProfileInterface> followBag = new Set<ProfileInterface>();
基本上,我们在我的数据结构类中学习
Array Bags
,Linked Bags
等。我的问题是我希望通过Set
在我的Profile
类中使用Composition
数据结构类的方法。我遇到的一个问题是,我需要在Profile
类中创建一个方法,该方法可以交叉引用给定数组中的项目,以查看该Profile
对象是否在“跟随”另一个Profile
,如果没有,则建议遵循该对象(分配是通过数据结构来完成类似于Twitter或Facebook的任务)。这是到目前为止我创建的方法,以及我无法通过的错误(顶部第三行): public ProfileInterface recommend(){
ProfileInterface recommended;
ProfileInterface thisProfile = new Profile(); // <--Here is the question
for(int index = 0; index < followBag.getCurrentSize(); index++){
ProfileInterface follows = followBag[index];
for(int followedFollowers = 0; followedFollowers < follows.getCurrentSize(); followedFollowers++) { // <--Question here also
//if Profile's match, do nothing
//if Profile's do not match, set recommended == the Profile
}
}
return recommended;
}
请原谅我仍在处理的伪代码。但是我无法继续使用这种方法,直到我完全理解我需要做些什么才能使第三次转换正确并了解我的其他担忧(第二注)是否可能。
我在Java第二课上学习,似乎无法克服这些问题。理想情况下,我希望一个或多个成员可以将其降低到5岁,这样我才能完全掌握它。我知道
Profile
类将与我的Composition
类具有“具有”关系(Set
)。我也知道,由于我已经按照自己的方式投射了followBag
,因此它将同时具有ProfileInterface
和Set
方法。但是,我想通过一个示例(如果可能的话)来说明如何在方法中正确地键入强制类型转换以获取数组的项,或者在此示例中的Set
中将其强制转换为给定对象?我希望将此对象(在这种情况下为thisProfile
)填充到给定的索引中,以进行比较。但是有两点需要澄清:A)对于类型转换如下的对象会发生什么:
ProfileInterface thisProfile = new Profile();
由于我既指接口又指实现它的类?意思是,如果我的
Profile()
类中有更多方法,则此thisProfile
仅可访问哪些方法;否则,此方法不可用。接口还是类?B)我是否应该简单地调用
ProfileInterface thisProfile
,然后将对thisProfile
的引用分配给内部for
循环内的特定索引?C)我的第二个注释:我在IntelliJ中遇到一个错误,指出它为“
cannot resolve method getCurrentSize()
”。我不明白这一点,因为我在上面创建了follows
。我以为ProfileInterface follows = followBag[index]
会将数组的给定Profile
索引设置为等于我的代码稍后使用的数组。此错误源于我上面的困惑。因此,一旦我清楚地说明了我做错了什么,我会很肯定,我相信我会适当地解决它。谢谢大家,一如既往,我期待着您的回音!
最佳答案
A)如下类型转换的对象会发生什么:ProfileInterface thisProfile = new Profile();
首先,这是一项任务,而不是类型转换。
由于我既指接口又指实现它的类?意思是,如果我的Profile()类中有更多方法,则此Profile只能访问哪些方法;接口还是类?
您只能访问ProfileInterface
中的方法。如果有问题,建议您将ProfileInterface
更改为Profile
。私有变量的类型应该没有问题可以重构。
C)我的第二个注释:我在IntelliJ中遇到一个错误,指出它“无法解析方法getCurrentSize()”。我不明白这一点,因为我创建的内容超出了上面的一行。
这意味着followBag
是Set
,没有实现名为getCurrentSize()
的方法。
我认为ProfileInterface跟= FollowBag [index]会将数组的给定Profile索引设置为等于我的代码稍后使用的数组。
这与问题C的第一部分无关。followBag
不是数组。我不确定您要在这里做什么,但是如果您是C#程序员,则Java不会使用相同的语法。 []
不能用于访问集合的成员。您必须使用get()
或相关方法。
我真的不确定您要在问题B中说些什么。我会摆脱语法错误,然后再次询问,这里有些问题,我无法确切知道您要去的地方。