如何将Android Kotlin代码转换为Java代码 class MainAdapter:RecyclerView.Adapter(){ 变量列表:list=arrayListOf() 变量跟踪器:SelectionTracker?=null 初始化{ SetHassTableId(真) } 覆盖BindViewHolder(holder:ViewHolder,位置:Int){ val编号=列表[位置] 追踪器?,让我来{ holder.bind(编号,it.isSelected(position.toLong())) } }

如何将Android Kotlin代码转换为Java代码 class MainAdapter:RecyclerView.Adapter(){ 变量列表:list=arrayListOf() 变量跟踪器:SelectionTracker?=null 初始化{ SetHassTableId(真) } 覆盖BindViewHolder(holder:ViewHolder,位置:Int){ val编号=列表[位置] 追踪器?,让我来{ holder.bind(编号,it.isSelected(position.toLong())) } },java,android,kotlin,android-recyclerview,Java,Android,Kotlin,Android Recyclerview,我想了解这个例子。tracker?是什么。让翻译成什么?还有Java中的init的等价物是什么 class MainAdapter : RecyclerView.Adapter<MainAdapter.ViewHolder>() { var list: List<Int> = arrayListOf() var tracker: SelectionTracker<Long>? = null init { setHas

我想了解这个例子。
tracker?是什么。让
翻译成什么?还有Java中的
init
的等价物是什么

class MainAdapter : RecyclerView.Adapter<MainAdapter.ViewHolder>() {

    var list: List<Int> = arrayListOf()
    var tracker: SelectionTracker<Long>? = null

    init {
        setHasStableIds(true)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val number = list[position]
        tracker?.let {
            holder.bind(number, it.isSelected(position.toLong()))
        }
    }
根据文档,init相当于java中的构造函数

init
根据文档-Kotlinlet是一个作用域函数,其中表达式内声明的变量不能在表达式外使用

let
这里的it是跟踪器的副本。更改it不会影响跟踪器变量

init
根据文档,init相当于java中的构造函数

init
根据文档-Kotlinlet是一个作用域函数,其中表达式内声明的变量不能在表达式外使用

let

这里的it是跟踪器的副本。更改it不会影响跟踪器变量。

MainAdapter在Java代码中的等效值如下:

init
tracker?.let {
    holder.bind(number, it.isSelected(position.toLong()))
}
class MainAdapter扩展了RecyclerView.Adapter{
列表=新的ArrayList();
选择跟踪器;
公共MainAdapter(){
setHasStableIds(true);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
int number=list.get(位置);
如果(跟踪器!=null){
holder.bind(编号,tracker.isSelected(position.toLong());
}
}
}

Java代码中的MainAdapter等价物如下:

tracker?.let {
    holder.bind(number, it.isSelected(position.toLong()))
}
class MainAdapter扩展了RecyclerView.Adapter{
列表=新的ArrayList();
选择跟踪器;
公共MainAdapter(){
setHasStableIds(true);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
int number=list.get(位置);
如果(跟踪器!=null){
holder.bind(编号,tracker.isSelected(position.toLong());
}
}
}

假设您熟悉java,我建议您使用另一种方式阅读kotlin代码。您可以在android studio中使用以下选项

在这之后,只需单击decompile和Voila!,您将获得java代码


现在,您可以阅读任何kotlin代码。

假设您对java非常熟悉,我推荐另一种阅读kotlin代码的方法。您可以在android studio中使用以下选项

class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {

    List<Integer> list = new ArrayList<>();
    SelectionTracker<Long> tracker;

    public MainAdapter() {
        setHasStableIds(true);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        int number = list.get(position);

        if (tracker != null) {
            holder.bind(number, tracker.isSelected(position.toLong()));
        }
    }
}

在这之后,只需单击decompile和Voila!,您将获得java代码

现在,您可以阅读任何kotlin代码

class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {

    List<Integer> list = new ArrayList<>();
    SelectionTracker<Long> tracker;

    public MainAdapter() {
        setHasStableIds(true);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        int number = list.get(position);

        if (tracker != null) {
            holder.bind(number, tracker.isSelected(position.toLong()));
        }
    }
}
上面的输出“11”,所以“let”不复制接收器,“it”只是指向接收器,它有副作用


上面的输出“11”,所以“let”不复制接收器,“it”只是指向接收器,它有副作用

是否要将此代码转换为java?是否要将此代码转换为java?