gpt4 book ai didi

java - 如何处理作为参数获取的私有(private)类的对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:46 25 4
gpt4 key购买 nike

我在大学学习Java,我必须做以下练习。(简化示例)

import java.util.*;

public class A{
private static class B{
Integer b;
private B(int b){this.b = b;}
}

private static class B_Comparable extends B implements Comparable<B_Comparable> {
private B_Comparable(int b){super(b);}
@Override
public int compareTo(B_Comparable that) {
return this.b.compareTo(that.b);
}
}

private static class C<T> implements myList<T> { // see below
private ArrayList<T> lst = new ArrayList<>();

private static C<B_Comparable> createComparable() {
C<B_Comparable> ust = new C<B_Comparable>();
for (int i =0; i < 9; i++)
ust.lst.add(new B_Comparable(i));
return ust;
}

@Override
public T fetch(int index){
return lst.get(index);
}
}

private void test(){
C<B_Comparable> ustComparable = C.createComparable();
A result = ClassD.handle(ustComparable,3,4);
}
}

//--------------------------------------------------------

public class ClassD{
public static <T, S> T handle( S ustC, int pos1, int pos2 ){
// how can I compare elems of object ustC ?
ustC.fetch(pos1).compareTo(ustC.fetch(pos2));
//how can I fetch obj at pos1 ?
return ustC.fetch(pos1);
}

}

//-----------------------------------------

public interface myList<T> {
T fetch(int index);
}

静态方法句柄获取一个私有(private)对象(ustC)。我怎么能够 使用此对象的方法、compareTo 和 fetch?我尝试过参数化,但如果方法正确,我不知道如何解决。感谢您的帮助。

最佳答案

正如评论中所讨论的,ustC ,由于在此上下文中调用句柄的方式是 C 类型,它实现了 myList界面。该接口(interface)公开了 fetch 方法,并且对您的句柄方法可见。

您在评论中进行的修改将允许您调用 fetch :

//Solution 
public class ClassD {
public static <S extends Comparable> S handle(myList<S> ustC, int pos1, int pos2 ){
int y = ustC.fetch(pos1).compareTo(ustC.fetch(pos2));
return ustC.fetch(pos1);
}
}

关于java - 如何处理作为参数获取的私有(private)类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com