java—如何将字符串转换为另一种类型以在函数中使用

oxosxuxt  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(268)

我收到了一条来自网络的信息。
该字符串与变量匹配。变量的类型为framelayout。
我有一个用framelayout调用的函数。
如何让函数接受传入字符串

@InjectView (R.id.printer45)
   FrameLayout printer_45;       

   public static final List<String> RED = Arrays.asList("printer_45")

   redLabelIcon(FrameLayout fL){

  ***create red icon***

   }

   String printer = data.getString("Printer")
   String status = data.getString("Status")

 **turn printer into frameLayout, somehow**

       if (RED.contains(status)){
           redLabelIcon(printer)
         }

我要做的是什么,这样我才能研究它。

mfuanj7w

mfuanj7w1#

您可以使用factorymethod模式来获得

public static FrameLayout getFrameLayout(String layoutName){
     if("layout1".equals(layoutName)){
      return FrameLayout1;
     }   else if (...){
     return FrameLayout2
     }
     ....
    }
bis0qfac

bis0qfac2#

您所做的就是所谓的“Map”——例如,通常您会在哈希表中看到“键”/“值”对。或者你可以用 Map 或者使用 case 语句或“else/if”。
就你而言 List 对象没有“键”只有“值”,所以它不工作。您需要能够将一个“key”如“red”与一个值如“printer\ u45”相关联。
如果你用了 Hashtable 然后不要使用“red”作为对象的名称,使用“printers”之类的名称,然后将“printer45”作为“value”,将“red”作为键。你也可以用一个 Map 一两个 Arrays (一个“键”和一个“值”)或许多其他方式。

3b6akqbq

3b6akqbq3#

您试图实现的目标称为Map:

Map<String, FrameLayout> mapping = new HashMap<>();
mapping.put("printer_45", printer_45);

同样地,您可以在一个字符串类型的键下将任意多个布局放入该Map中。稍后检索布局:

String printer = data.getString("Printer");
FrameLayout layout = mapping.get(printer);

相关问题