java - 带“或”的动态参数
问题描述
我想知道是否可以做这样的事情:
public String gE(EditText text || TextInputEditText text || BootstrapEditText text){
return text.getText().toString();
}
感知“或”的使用,参数基本上具有相同的属性,但我想要一种方式,我可以传递一个或另一个,而不必为每个元素创建一个。在java中可以做到这一点吗?
解决方案
您可以传递一个对象,然后检查其类型。
public String gE(Object o) {
if(o instanceof TextInputEditText) {
return ((TextInputEditText) o).getText().toString();
}
else if(o instanceof BootstrapEditText) {
return ((BootstrapEditText) o).getText().toString();
}
else if(o instanceof EditText) {
return ((EditText) o).getText().toString();
}
return null;
}
确保基类是最后检查的条件,否则扩展类的代码将无法访问。例如 - 如果您TextInputEditText
在条件后检查条件EditText
,它将始终为EditText
条件返回 true,因此永远不会检查TextInputEditText
条件。这是因为TextInputEditText extends EditText
.
更新 - 使用instanceof
被认为是不好的做法。所以,请改用函数重载。喜欢 -
public String gE(TextInputEditText text) {
return text.getText().toString();
}
public String gE(BootstrapEditText text) {
return text.getText().toString();
}
public String gE(EditText text) {
return text.getText().toString();
}
推荐阅读
- batch-file - 批处理文件代码同时移动和重命名文件
- javascript - 如何从javascript中的字符串中提取非int值?
- google-sheets - Google Charts API - 带有前导零的二维码
- r - R vroom 导入包 - 关闭连接
- html - 透明菜单/CSS
- google-chrome - 帮助删除注册表中的文件夹
- select - ExtJS - 如何将选择回滚到网格中的旧选定记录?
- python - 根据来自其他熊猫数据框的匹配列更新熊猫列的最快方法
- php - 如何将内联 PHP 添加到 .twig 文件?
- postgresql - PostgreSQL 继承 postgres 的权限