有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oop Java如何读取从其他公共类方法传递给args[0]的变量

我试图读取传递给jar文件的参数,但我的疑问是——例如,是否有任何方法可以直接从子类读取父类变量的构造函数

KafkaSparkStreaming是我的父类,而我的hbaseconnection是我的子类,现在我的疑问是如何从父类中获取主机名作为参数传递给我的子类hbaseconnection,而且我不想将其设置为参数,可能整个理解按引用传递和值可能是错误的

父类

public class KafkaSparkStreaming {

  public String hostDetails;
  public String zipCodePath;

  public KafkaSparkStreaming(String[] args){
    this.hostDetails = args[0];
    this.zipCodePath = args[1];
  }

  public static void main(String[] args) throws Exception {

    if(args.length<2) {
        System.out.println("Arguments must be supplied ");
        System.out.println("Usage: args[0] --> hostName args[1] --> path of zipcodecsv file");
        System.exit(1);
    }
    KafkaSparkStreaming cdhHost = new KafkaSparkStreaming(args);
  }
}

儿童班

 public class HbaseConnection extends KafkaSparkStreaming implements 
 Serializable  {
    public static String host;
    public HbaseConnection(String[] args) {
    super(args);
}

    private static final long serialVersionUID = 1L;
    static Admin hbaseAdmin = null;
    public static Admin getHbaseAdmin() throws IOException {
    org.apache.hadoop.conf.Configuration conf = 
(org.apache.hadoop.conf.Configuration) HBaseConfiguration.create();
    conf.setInt("timeout", 12000000);
    conf.set("hbase.master","cloudera-instance:60000");            
    conf.set("hbase.zookeeper.quorum", "cloudera-instance");
    conf.set("hbase.zookeeper.property.clientPort", "2181");
    conf.set("zookeeper.znode.parent", "/hbase");
    Connection con = ConnectionFactory.createConnection(conf);

    try {

    if (hbaseAdmin == null)
    //hbaseAdmin = new HBaseAdmin(conf);
    hbaseAdmin = con.getAdmin();
    } catch (Exception e) {
    e.printStackTrace();
    }
return hbaseAdmin;

 }

共 (2) 个答案

  1. # 1 楼答案

    由于HbaseConnectionKafkaSparkStreaming的一个子类,您只需使用其名称访问它,如下所示-

    public class HbaseConnection extends KafkaSparkStreaming {
    
        // rest of your code
    
        public void getDetails() {
            // do something here    
            System.out.println("Host details from sub-class" + hostDetails);
        }
    
    }
    
  2. # 2 楼答案

    由于hostDetailsKafkaSparkStreaming中的public属性,并且HbaseConnection扩展KafkaSparkStreaming类型的HbaseConnection对象可以从父类访问该属性。你可以直接在^{中使用它