小编flu*_*ffy的帖子

新的 Java 17 类型模式匹配开关在幕后如何工作?

新的 Java 17 类型模式匹配开关在幕后如何工作?由于该功能相当新,因此这个问题不讨论它。

提醒:要使此代码在 Java 17 下运行,您需要启用预览功能

public static void test (Object o) {
  System.out.println(switch(o){
    case Number n -> "number " + n;
    case Enum e -> "enum " + e;
    case String s -> "string " + s;
    default -> "other " + o;
  });
}
Run Code Online (Sandbox Code Playgroud)

上面代码的反汇编版本使用javap -c:

   0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
   3: aload_0
   4: dup
   5: invokestatic  #13                 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
   8: pop
   9: astore_1
  10: iconst_0
  11: istore_2
  12: aload_1 …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
1527
查看次数

改造 2:在没有网络的情况下读取 JSON 时应用程序崩溃

当用户没有互联网连接时尝试使用 Gson 和 Retrofit2 读取 json 信息时,我试图阻止我的应用程序崩溃。有任何想法吗?

我的代码:

分段

class ManuFragment : Fragment() {
    private lateinit var viewModel: ManuFragmentVM

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        _binding = FragmentManuBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        viewModel = ViewModelProvider(this).get(ManuFragmentVM::class.java)

        viewModel.apply {
            manufacturer.observe(requireActivity(), {loadRecyclerView(it)})
            setup()
        }
    }

Run Code Online (Sandbox Code Playgroud)

查看模型

class ManuFragmentVM : ViewModel() {

    val manufacturer = MutableLiveData<List<Manufacturers>>()

    fun setup() {
        viewModelScope.launch(Dispatchers.Default) {
            manufacturer.postValue(CarsRepository().getAllManufacturers())
        }
    }
Run Code Online (Sandbox Code Playgroud)

界面

interface ManufacturerApi {
    @GET("url.json")
    suspend …
Run Code Online (Sandbox Code Playgroud)

android kotlin retrofit2

2
推荐指数
1
解决办法
1416
查看次数

标签 统计

android ×1

java ×1

kotlin ×1

retrofit2 ×1