【发布时间】:2022-01-11 18:03:15
【问题描述】:
不确定这在 JAVA 中是否可行,也不知道它叫什么,所以我不确定要查找什么,但如果可以的话,我真的想在我的逻辑中实现相同的功能。我知道我们可以替换值,但是我不确定如何替换变量。
public interface Constants {
GENDER_${MALE} = "where Gender = 'MALE' ";
GENDER_${FEMALE} = "where Gender = 'FEMALE' ";
}
public class Impl {
System.out.println(Constants.GENDER_MALE);
}
Expected O/P : where Gender = 'MALE';
我只是不想使用 if else 条件,如果 Male 然后返回男性特定的 where 子句 else female.. 因为在实际代码中几乎有 30-35 个 if else 条件,如果可能的话,只想减少它。
【问题讨论】:
-
在 Java 中不可能(像这样),因为 java 是一种静态编译的语言,并且没有办法拥有像这样执行“动态”的接口。您可以考虑定义一个实现接口的枚举,该接口返回您的 where 子句。
-
如果您正在构建 SQL 查询,您可能应该使用 JPA 库,而不是硬编码的 sql 过滤字符串
-
不仅在 Java 中不可能,而且我什至看不到在现实生活中这样做的好处。您的变量名称不应根据其值而变化,也不应延迟命名变量直到设置值。在我看来,这对于常量来说甚至是不切实际的。使用您的示例,将变量命名为
GENDER有什么问题? -
由于这似乎是关于构建 SQL 语句,您应该了解
PreparedStatement和How does a PreparedStatement avoid or prevent SQL injection? -
@ʀᴀʜɪʟ 这点更像是:反射应该永远是你最后的手段。只有在没有其他有意义的方式来实现您需要的东西时,您才会使用它。建议 Java 新手考虑反射时要非常小心。
标签: java if-statement variables substitution