java 11没有Bundle
时间: 2023-11-26 09:16:28 浏览: 39
Java 11 中的确没有 `java.util.ResourceBundle` 类的 `getBundle()` 方法的重载版本,该版本接受一个 `ClassLoader` 参数。但是,你仍然可以使用 `getBundle()` 方法的其他重载版本来加载资源束,例如:
```java
ResourceBundle bundle = ResourceBundle.getBundle("com.example.messages");
```
该方法默认使用当前线程的上下文类加载器来加载资源束。如果需要指定其他类加载器,则可以使用 `ResourceBundle.Control` 类和 `ResourceBundle.getBundle()` 方法的重载版本。
```java
ClassLoader cl = MyClassLoader.getInstance();
ResourceBundle bundle = ResourceBundle.getBundle("com.example.messages", Locale.US, cl);
```
请注意,如果您使用 `getBundle()` 方法的重载版本来加载资源束,并且没有指定类加载器,则将使用默认的类加载器来加载资源束。
相关问题
java 11 里面没有android.os.Bundle
是的,Java 11 中没有 `android.os.Bundle` 类,该类是 Android 开发中的一部分。`android.os.Bundle` 是一个 Android 操作系统中的类,用于在应用程序组件之间传递数据。
如果您需要在 Java 应用程序中使用类似的功能,则可以使用 `java.util.HashMap` 或 `java.util.Properties` 等类来保存和传递键值对。例如,您可以创建一个 `HashMap` 对象来保存一组键值对,然后将其传递给另一个方法或对象。
```java
HashMap<String, Object> bundle = new HashMap<>();
bundle.put("key1", "value1");
bundle.put("key2", 123);
```
然后,您可以将 `bundle` 对象传递给另一个方法或对象。如果您需要在应用程序的不同组件之间传递数据,则可以使用 `java.io.Serializable` 接口来序列化和反序列化对象。
```java
public void sendBundle(HashMap<String, Object> bundle) {
// send the bundle to another component or method
}
public void receiveBundle(HashMap<String, Object> bundle) {
String value1 = (String) bundle.get("key1");
int value2 = (int) bundle.get("key2");
// process the values
}
```
请注意,这只是一种可能的方法,您可以根据需要使用其他类和技术来实现类似的功能。
bundle getSerializable
bundle.getSerializable() 方法用于从 Bundle 对象中获取一个可序列化的对象。它接受一个键作为参数,并返回与该键关联的可序列化对象。
示例用法:
```java
Bundle bundle = getIntent().getExtras(); // 获取传递的 Bundle 对象
SerializableObject object = (SerializableObject) bundle.getSerializable("key"); // 获取可序列化对象
// 使用获取到的可序列化对象进行操作
if (object != null) {
// 执行相应的操作
} else {
// 处理对象为 null 的情况
}
```
在这个例子中,我们首先从 Intent 中获取传递的 Bundle 对象。然后,我们使用 `bundle.getSerializable("key")` 方法获取与指定键关联的可序列化对象。最后,我们对获取到的对象进行操作,需要注意判断对象是否为 null。
请注意,要使用 `getSerializable()` 方法,你需要确保传递给 Bundle 的对象实现了 Serializable 接口。这意味着该对象必须能够将其状态序列化为字节流,并能够将其字节流反序列化为对象状态。