Java 包/类名可以是函数参数吗?

Java 包/类名可以是函数参数吗?,java,android,function,package,Java,Android,Function,Package,我有以下代码: import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Phone; ... builder = newBuilder(id, Email.CONTENT_ITEM_TYPE, bUpdate); if (bPref) { builder.withValue(Email.TYPE, Em

我有以下代码:

import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;

...
builder = newBuilder(id, Email.CONTENT_ITEM_TYPE, bUpdate);
if (bPref) {
    builder.withValue(Email.TYPE, Email.TYPE_CUSTOM);
    builder.withValue(Email.LABEL, "PREF");
} else if (iType != -1) {
    builder.withValue(Email.TYPE, iType);
}
builder.withValue(Email.DATA, value);
ops.add(builder.build());

builder = newBuilder(id, Phone.CONTENT_ITEM_TYPE, bUpdate);
if (bPref) {
    builder.withValue(Phone.TYPE, Phone.TYPE_CUSTOM);
    builder.withValue(Phone.LABEL, "PREF");
} else if (iType != -1) {
    builder.withValue(Phone.TYPE, iType);
}
builder.withValue(Phone.DATA, value);
ops.add(builder.build());

builder = ...
...
这些块非常相似,我想为它们编写一个函数

例如:

void build(xxx name) {
  ...
  if (bPref) {
    builder.withValue(name.TYPE, name.TYPE_CUSTOM);
    builder.withValue(name.LABEL, "PREF");
  } else if (iType != -1) {
    builder.withValue(name.TYPE, iType);
  }
  builder.withValue(name.DATA, value);
  ops.add(builder.build());
}

...
build(Email);
build(Phone);
build(...);

或者有什么方法可以将它们重构为函数吗?

这是我唯一能弄明白如何将其变成函数的方法:

void build(String itemType, String fieldType, int typeCustom, String label, String data) {
}

...
build(Email.CONTENT_ITEM_TYPE, Email.TYPE, Email.TYPE_CUSTOM, Email.LABEL, Email.DATA);
build(Phone.CONTENT_ITEM_TYPE, Phone.TYPE, Phone.TYPE_CUSTOM, Phone.LABEL, Phone.DATA);
build(Website.CONTENT_ITEM_TYPE, Website.TYPE, Website.TYPE_CUSTOM, Website.LABEL, Website.DATA);

它不像我预期的那样简洁,但比最初的重复块要好。

什么是电子邮件和电话?请参阅我代码的前两行。它们是android.provider.ContactsContract.commondatatypes.Email和android.provider.ContactsContract.commondatatypes.phone我在问它们是什么类型的-类、枚举、包本身?还是怎样您当前的问题太模糊,无法回答。它没有包含足够的关于设计的信息来提供更好的替代方案。@RohitJain我是Java新手,所以说实话,我不确定它们是什么。据我所知,他们看起来像是在上课吗?